Zarządzanie hasłami / kluczami dla wielu komputerów w emacsie

10

Loguję się do wielu maszyn w ramach mojej pracy (+ - 20 dziennie). Z każdą maszyną spędzam tylko kilka dni / tygodni. Wielu uruchamia tylko ftp.

Bezproblemowy dostęp Tramp jest niesamowity, ale ręczne zarządzanie dostępem do serwera stało się uciążliwe.

Zarządzam .netrc i .ssh / config ręcznie, wraz z dowolnymi kluczami. Często hasło / klucz zmienia się podczas mojego korzystania z urządzenia i będę musiał ponownie edytować pliki.

Czy istnieje skuteczne rozwiązanie do zarządzania (maszynami / hasłami / kluczami) z poziomu emacsa?

Gambo
źródło

Odpowiedzi:

7

Używam prostego menedżera haseł o nazwie pass . Oferuje prosty interfejs wiersza poleceń, idealny do integracji z Emacsem. Magazyn kopii zapasowych to zaszyfrowane przez GPG repozytorium GIT. W rzeczywistości jest dostarczany z pakietem Emacsa, chociaż go nie używam. Mój interfejs jest śmiesznie prosty:

(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
źródło
Pass nie był do końca tym, czego szukałem, ale wybrałem twoją odpowiedź, ponieważ uważam, że moja jest wyjątkowa. Ale twoja odpowiedź jest znacznie bardziej przydatna dla społeczności.
Gambo
@Gambo oraz repozytorium git jest dość łatwe do rozpowszechnienia. Musisz jednak rozdać klucze. Nie eksperymentowałem z obsługą wielu klawiszy.
stsquad
3

Tramp używa backendu źródeł autoryzacji do zarządzania hasłami. Potrzebuje specjalistycznych wpisów w .authinfo, takich jak

 machine melancholia port scp login daniel password geheim

Szczegółowe informacje można znaleźć w instrukcji obsługi Trampa, w rozdziale „Obsługa hasła”.

źródła autoryzacji mają również pewną funkcjonalność do tworzenia wpisów hasła w locie. Nigdy nie próbowałem tej funkcji z Trampem, ale może trochę to zbadasz.

Michael Albinus
źródło
Począwszy od wersji Tramp 2.4.0, Tramp zapisuje również nowe hasła za pośrednictwem źródeł autoryzacji.
Michael Albinus