Gestión de contraseñas / claves para múltiples máquinas en emacs

10

Me conecto a numerosas máquinas como parte de mi trabajo (+ - 20 por día). Solo paso unos días / semanas con cada máquina. Muchos solo ejecutan ftp.

Para un acceso perfecto, Tramp es sorprendente, pero es la gestión del acceso de estos servidores a mano lo que se ha vuelto tedioso.

Administro un .netrc y un .ssh / config a mano, junto con cualquier tecla. A menudo, una contraseña / clave cambiará durante mi tiempo con la máquina, y tendré que volver a editar los archivos.

¿Existe una solución efectiva para administrar (máquinas / contraseñas / claves) desde emacs?

Gambo
fuente

Respuestas:

7

Yo uso un administrador de contraseñas simple llamado pass . Ofrece una interfaz de línea de comandos simple con es ideal para integrarse con Emacs. La tienda de respaldo es un repositorio GIT cifrado con GPG. En realidad se envía con un paquete de Emacs aunque no lo uso. Mi interfaz es ridículamente simple:

(defun my-fixup-gpg-agent (frame)
  "Tweak DISPLAY and GPG_TTY environment variables as appropriate to `FRAME'."
  (when (fboundp 'keychain-refresh-environment)
    (keychain-refresh-environment))
  (if (display-graphic-p frame)
      (setenv "DISPLAY" (terminal-name frame))
    (setenv "GPG_TTY" (terminal-name frame))
    (setenv "DISPLAY" nil)))

(add-hook 'after-make-frame-functions 'my-fixup-gpg-agent)

;; Simple caching
(defvar my-cached-passwords
  nil
  "Cache of passwords. Stored in plain text so you only want to cache
  them if of low value.")

(defun my-pass-password (pass-name &optional cache)
  "Return the password for the `PASS-NAME'."
  (let ((cached-pass (assoc-default pass-name my-cached-passwords)))
    (if cached-pass
        cached-pass
      (when (selected-frame)
        (my-fixup-gpg-agent (selected-frame))
        (let ((new-pass (chomp
                         (shell-command-to-string
                          (format "pass %s" pass-name)))))
          (when (and new-pass cache)
            (add-to-list 'my-cached-passwords (cons pass-name new-pass)))
          new-pass)))))
stsquad
fuente
Pass no era del todo lo que estaba buscando, pero elegí tu respuesta porque siento que la mía es un caso marginal. Pero su respuesta es mucho más útil para la comunidad.
Gambo
@Gambo, así como un repositorio de git, es bastante fácil de distribuir. Sin embargo, es necesario distribuir las claves. No he experimentado con su soporte multitecla.
stsquad
3

Tramp usa el backend de auth-sources para administrar contraseñas. Necesita algunas entradas especializadas en .authinfo, como

 machine melancholia port scp login daniel password geheim

Lea el manual de Tramp, capítulo "Manejo de contraseña", para más detalles.

auth-sources también tiene alguna funcionalidad para crear entradas de contraseña sobre la marcha. Nunca he probado esta funcionalidad con Tramp, pero tal vez investigues un poco.

Michael Albinus
fuente
Comenzando con Tramp 2.4.0, Tramp también guarda contraseñas nuevas a través de fuentes de autenticación.
Michael Albinus