summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Albinus <michael.albinus@gmx.de>2015-09-01 14:57:39 +0200
committerMichael Albinus <michael.albinus@gmx.de>2015-09-01 14:57:39 +0200
commit447e5890a81f098881aecc099852ace466ef5925 (patch)
tree5d7d05453cdbdf9f8e602b12ca49b698afe5388c
parent21d6414a4b0f37b2381859eeebf66908b6568c31 (diff)
downloademacs-447e5890a81f098881aecc099852ace466ef5925.tar.gz
Some Tramp password fixes
* lisp/net/tramp.el (tramp-clear-passwd): Clear also the passwords of the hops. * lisp/net/tramp-sh.el (tramp-methods) <sudo>: Move "-p" "Password:" at the beginning of the command. Otherwise, it could be interpreted as password prompt if the remote host echoes the command. (tramp-remote-coding-commands): Add "openssl enc -base64".
-rw-r--r--lisp/net/tramp-sh.el6
-rw-r--r--lisp/net/tramp.el10
2 files changed, 15 insertions, 1 deletions
diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el
index 8cae8dc92b9..5f96b92f17f 100644
--- a/lisp/net/tramp-sh.el
+++ b/lisp/net/tramp-sh.el
@@ -288,7 +288,10 @@ The string is used in `tramp-methods'.")
(add-to-list 'tramp-methods
'("sudo"
(tramp-login-program "sudo")
- (tramp-login-args (("-u" "%u") ("-s") ("-H") ("-p" "Password:")))
+ ;; The password template must not be the last argument.
+ ;; Otherwise, it could be interpreted as password prompt if the
+ ;; remote host echoes the command.
+ (tramp-login-args (("-p" "Password:") ("-u" "%u") ("-s") ("-H")))
;; Local $SHELL could be a nasty one, like zsh or fish. Let's override it.
(tramp-login-env (("SHELL") ("/bin/sh")))
(tramp-remote-shell "/bin/sh")
@@ -4316,6 +4319,7 @@ with the encoded or decoded results, respectively.")
;; However, I don't know whether all base64 versions do supports
;; this option.
(b64 "base64" "base64 -d")
+ (b64 "openssl enc -base64" "openssl enc -d -base64")
(b64 "mimencode -b" "mimencode -u -b")
(b64 "mmencode -b" "mmencode -u -b")
(b64 "recode data..base64" "recode base64..data")
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index bf3e1c740de..6bafae01c0a 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -4258,6 +4258,16 @@ Invokes `password-read' if available, `read-passwd' else."
;;;###tramp-autoload
(defun tramp-clear-passwd (vec)
"Clear password cache for connection related to VEC."
+ (let ((hop (tramp-file-name-hop vec)))
+ (when hop
+ ;; Clear also the passwords of the hops.
+ (tramp-clear-passwd
+ (tramp-dissect-file-name
+ (concat
+ tramp-prefix-format
+ (tramp-compat-replace-regexp-in-string
+ (concat tramp-postfix-hop-regexp "$")
+ tramp-postfix-host-format hop))))))
(tramp-compat-funcall
'password-cache-remove
(tramp-make-tramp-file-name