Керування паролем / ключами для декількох машин у emacs


10

Я входжу в численні машини як частину своєї роботи (+ - 20 на день). Я проводжу лише кілька днів / тижнів з кожною машиною. Багато хто працює лише ftp.

Для безперебійного доступу Трамп - це дивовижно, але управління доступом до цих серверів стає втомливим.

Я керую рукою .netrc та .ssh / config разом із будь-якими клавішами. Часто пароль / ключ змінюватимуться протягом мого часу роботи з машиною, і мені доведеться повторно редагувати файли.

Чи є ефективне рішення для управління (машини / паролі / ключі) зсередини emacs?

Відповіді:


7

Я використовую простий менеджер паролів під назвою pass . Він пропонує простий інтерфейс командного рядка, який ідеально підходить для інтеграції з Emacs. Магазин резервного копіювання - це зашифрований GPG РЕПО у форматі GPG. Він фактично поставляється з пакетом Emacs, хоча я не використовую його. Мій інтерфейс смішно простий:

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

Пас був не зовсім те, що я шукав, але я вибрав вашу відповідь, тому що я вважаю, що моя справа краща. Але ваша відповідь набагато корисніша для громади.
Гамбо

@Gambo також як git repo поширювати досить просто. Хоча вам потрібно поширювати ключі. Я не експериментував з його підтримкою з декількома ключами.
stsquad

3

Трамп використовує бекенд аутентичних джерел для управління паролями. Для цього потрібні деякі спеціалізовані записи в .authinfo, як

 machine melancholia port scp login daniel password geheim

Детально ознайомтеся з посібником про Трамп, розділ "Поводження з паролем".

auth-джерела також мають деяку функціональність для створення записів пароля на ходу. Я ніколи не пробував цю функціональність з Трампом, але, можливо, ви трохи досліджуєте.


Починаючи з Tramp 2.4.0, Tramp зберігає також нові паролі через auth-джерела.
Майкл Альбінус
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.