답변:
pass 라는 간단한 비밀번호 관리자를 사용합니다 . Emacs와 통합하기에 이상적인 간단한 명령 행 인터페이스를 제공합니다. 백업 저장소는 GPG 암호화 GIT 저장소입니다. 실제로 사용하지는 않지만 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)))))
Tramp는 auth-sources 백엔드를 사용하여 비밀번호를 관리합니다. .authinfo에 몇 가지 특수 항목이 필요합니다.
machine melancholia port scp login daniel password geheim
자세한 내용은 Tramp 매뉴얼의 "비밀번호 처리"장을 읽으십시오.
auth-sources에는 암호 항목을 즉석에서 생성하는 기능도 있습니다. 나는 Tramp 로이 기능을 시도한 적이 없지만 조금 조사 할 수도 있습니다.