]> code.delx.au - gnu-emacs/commitdiff
Some Tramp password fixes
authorMichael Albinus <michael.albinus@gmx.de>
Tue, 1 Sep 2015 12:57:39 +0000 (14:57 +0200)
committerMichael Albinus <michael.albinus@gmx.de>
Tue, 1 Sep 2015 12:57:39 +0000 (14:57 +0200)
* 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".

lisp/net/tramp-sh.el
lisp/net/tramp.el

index 8cae8dc92b9c3704b57e875cd795d74533f97720..5f96b92f17fb278dd366608c095eac5543dc54bd 100644 (file)
@@ -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")
index bf3e1c740de0a9c7406d995ebe3127a4db2fd86d..6bafae01c0a8a1f29964c80c9918edcabf00aa72 100644 (file)
@@ -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