Chạy ssh-add từ Emacs và nhập cụm mật khẩu


9

Tôi muốn gọi ssh-addlệnh shell. Vì vậy, tôi gọi M-x shell-command RET, và trong xe buýt nhỏ, tôi gõ:ssh-add .ssh/id_rsa

Điều duy nhất tôi nhận được là:

ssh_askpass: exec(/usr/bin/ssh-askpass): No such file or directory^M

Làm cách nào tôi có thể khiến Emacs cung cấp cho tôi một dấu nhắc khác, vì vậy tôi có thể nhập cụm mật khẩu ssh-add đang chờ?

Đây là với Emacs dưới X11 trên Debian.

Câu trả lời:


4

Cách dễ dàng sẽ là cài đặt ssh-askpass. Đây là chương trình ssh-addchạy khi đầu vào tiêu chuẩn của nó không phải là thiết bị đầu cuối mà là màn hình X11 có sẵn. Chương trình ssh-askpassnhắc nhập cụm mật khẩu của bạn trong một cửa sổ GUI riêng.

Nếu bạn muốn ở trong Emacs hoặc nếu bạn muốn một giải pháp hoạt động cho dù X11 có sẵn hay không, bạn có thể tạo dấu nhắc Emacs cho cụm mật khẩu. Đây là một số mã Lisp (được kiểm tra tối thiểu) để làm điều này.

(defun ssh-add-process-filter (process string)
  (save-match-data
    (if (string-match ":\\s *\\'" string)
        (process-send-string process (concat (read-passwd string) "\n"))
      (message "%s" string))))
(defun ssh-add (key-file)
  "Run ssh-add to add a key to the running SSH agent.
Let Emacs prompt for the passphrase."
  (interactive "fAdd key: \n")
  (let ((process-connection-type t)
            process)
    (unwind-protect
        (progn
          (setq process (start-process "ssh-add" nil
                                       "ssh-add" (expand-file-name key-file)))
          (set-process-filter process 'ssh-add-process-filter)
          (while (accept-process-output process)))
      (if (eq (process-status process) 'run)
          (kill-process process)))))

1

Cách đơn giản nhất để làm điều này là sử dụng M-x shellthay vì shell-command. M-x shelllà một vỏ thực tế, không chỉ là một dấu nhắc, và nó phải có khả năng tương tác nông như thế này.

Bất cứ khi nào bạn cần sử dụng lệnh shell và thậm chí shellkhông làm những gì bạn cần, M-x termthay vào đó hãy gọi , đó là trình giả lập thiết bị đầu cuối thực tế và có khả năng thực hiện hầu hết các tác vụ.


Đây thực sự là cách tôi đang làm. Điều thú vị sẽ là: có thể thêm khóa ssh của tôi vào tác nhân ssh mà không bắt buộc phải khởi chạy toàn bộ shell & mà không cần rời khỏi bộ đệm hiện tại.
Nsukami _
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.