tramp-auto-auth

Homepage: https://github.com/oitofelix/tramp-auto-auth

Author: Bruno Félix Rezende Ribeiro

Updated:

Summary

TRAMP automatic authentication library

Commentary

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!

Dependencies