From: Michael Albinus Date: Tue, 1 Sep 2015 12:57:39 +0000 (+0200) Subject: Some Tramp password fixes X-Git-Tag: emacs-25.0.90~1228^2~10 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=447e5890a81f098881aecc099852ace466ef5925;p=emacs.git 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) : 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". --- 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