Gestione password / chiavi per più macchine in emacs


10

Accedo a numerose macchine come parte del mio lavoro (+ - 20 al giorno). Trascorro solo pochi giorni / settimane con ogni macchina. Molti eseguono solo ftp.

Per un accesso senza interruzioni, Tramp è sorprendente, ma è diventata noiosa la gestione manuale dell'accesso a questi server.

Gestisco manualmente un .netrc e un .ssh / config, insieme a qualsiasi tasto. Spesso una password / chiave cambia durante il mio tempo con la macchina e dovrò modificare nuovamente i file.

Esiste una soluzione efficace per la gestione (macchine / password / chiavi) dall'interno di Emacs?

Risposte:


7

Uso un semplice gestore di password chiamato pass . Offre una semplice interfaccia a riga di comando con l'ideale per l'integrazione con Emacs. Il backing store è un repository GIT crittografato con GPG. In realtà viene fornito con un pacchetto Emacs anche se non lo uso. La mia interfaccia è ridicolmente semplice:

(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)))))

Pass non era esattamente quello che cercavo, ma ho scelto la tua risposta perché ritengo che la mia sia un caso limite. Ma la tua risposta è molto più utile per la comunità.
Gambo,

@Gambo bene come repository git è abbastanza facile da distribuire. Tuttavia, è necessario distribuire le chiavi. Non ho sperimentato il supporto multi-chiave.
stsquad,

3

Tramp utilizza il backend di auth-source per la gestione delle password. Ha bisogno di alcune voci specializzate in .authinfo, come

 machine melancholia port scp login daniel password geheim

Leggi il manuale di Vagabondo, capitolo "Gestione password", per i dettagli.

auth-sources ha anche alcune funzionalità per creare al volo voci di password. Non ho mai provato questa funzionalità con Tramp, ma forse indagherai un po '.


A partire da Tramp 2.4.0, Tramp salva anche nuove password tramite fonti di autenticazione.
Michael Albinus,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.