การจัดการรหัสผ่าน / คีย์สำหรับเครื่องหลายเครื่องใน emacs


10

ฉันเข้าสู่ระบบหลายเครื่องซึ่งเป็นส่วนหนึ่งของงานของฉัน (+ - 20 ต่อวัน) ฉันใช้เวลาสองสามวัน / สัปดาห์กับแต่ละเครื่อง ใช้ ftp จำนวนมากเท่านั้น

สำหรับการเข้าถึงที่ไร้รอยต่อ Tramp นั้นน่าทึ่ง แต่มันก็เป็นการจัดการการเข้าถึงของเซิร์ฟเวอร์ด้วยมือที่น่าเบื่อ

ฉันจัดการ. netrc และ a .ssh / config ด้วยมือพร้อมกับปุ่มใด ๆ บ่อยครั้งที่รหัสผ่าน / คีย์จะมีการเปลี่ยนแปลงในระหว่างที่ฉันใช้งานเครื่องและฉันจะต้องแก้ไขไฟล์อีกครั้ง

มีวิธีที่มีประสิทธิภาพสำหรับการจัดการ (เครื่อง / รหัสผ่าน / กุญแจ) จากภายใน emacs หรือไม่?

คำตอบ:


7

ฉันจะใช้จัดการรหัสผ่านง่ายๆที่เรียกว่าผ่าน มันมีอินเตอร์เฟสบรรทัดคำสั่งที่เรียบง่ายพร้อมเหมาะสำหรับการรวมเข้ากับ Emacs ที่เก็บข้อมูลสำรองเป็น repo GIT ที่เข้ารหัส 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

@Gambo และ repo คอมไพล์มันค่อนข้างง่ายที่จะแจกจ่าย คุณจำเป็นต้องแจกจ่ายกุญแจ ฉันไม่ได้ทดลองใช้กับการสนับสนุนหลายคีย์
stsquad

3

คนจรจัดใช้แบ็กเอนด์รับรองความถูกต้องสำหรับการจัดการรหัสผ่าน ต้องการรายการพิเศษใน. authinfo เช่น

 machine melancholia port scp login daniel password geheim

อ่านคู่มือคนจรจัดตอน "การจัดการรหัสผ่าน" เพื่อดูรายละเอียด

รับรองความถูกต้องแหล่งที่มายังมีฟังก์ชั่นบางอย่างเพื่อสร้างรายการรหัสผ่านได้ทันที ฉันไม่เคยลองใช้ฟังก์ชั่นนี้กับ Tramp แต่บางทีคุณอาจตรวจสอบนิดหน่อย


เริ่มต้นด้วย Tramp 2.4.0, Tramp บันทึกรหัสผ่านใหม่ผ่าน auth-source
Michael Albinus
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.