Homepage: https://github.com/oitofelix/tramp-auto-auth
Author: Bruno Félix Rezende Ribeiro
Updated:
TRAMP automatic authentication library
This library provides ‘tramp-auto-auth-mode’: a global minor mode whose purpose is to automatically feed TRAMP sub-processes with passwords for paths matching regexps. This is useful in situations where interactive user input is not desirable or feasible. For instance, in sub-nets with large number of hosts or whose hosts have dynamic IPs assigned to them. In those cases it’s not practical to query passwords using the ‘auth-source’ library directly, since this would require each host to be listed explicitly and immutably in a Netrc file. Another scenario where this mode is useful are non-interactive Emacs sessions (like those used for batch processing or by evaluating ‘:async’ Org Babel source blocks) in which it’s impossible for the user to answer a password-asking prompt. When a TRAMP prompt is encountered, ‘tramp-auto-auth-mode’ queries the alist ‘tramp-auto-auth-alist’ for the auth-source spec value whose regexp key matches the correspondent TRAMP path. This spec is then used to query the auth-source library for a presumably phony entry exclusively dedicated to the whole class of TRAMP paths matching that regexp. To make use of the automatic authentication feature, on the Lisp side the variable ‘tramp-auto-auth-alist’ must be customized to hold the path regexps and their respective auth-source specs, and then ‘tramp-auto-auth-mode’ must be enabled. For example: ---- ~/.emacs.el ------------------------------------------------- (require 'tramp-auto-auth) (add-to-list 'tramp-auto-auth-alist '("root@10\\.0\\." . (:host "Funny-Machines" :user "root" :port "ssh"))) (tramp-auto-auth-mode) ------------------------------------------------------------------ After this, just put the respective sacred secret in an authentication source supported by auth-source library. For instance: ---- ~/.authinfo.gpg --------------------------------------------- machine Funny-Machines login root password "$r00tP#sWD!" port ssh ------------------------------------------------------------------ In case you are feeling lazy or the secret is not so secret (nor so sacred) -- or for any reason you need to do it all from Lisp -- it’s enough to: (auth-source-remember '(:host "Funny-Machines" :user "root" :port "ssh") '((:secret "$r00tP#sWD!"))) And happy TRAMPing!