Shell
從 FIFO 載入 RSA 密鑰時如何強制 ssh-add 詢問密碼?
我創建了以下 RSA 密鑰(帶有密碼):
ssh-keygen -t rsa -f rsa_foo
現在以正常方式添加密鑰時,
ssh-add
要求輸入密碼:$ ssh-add rsa_foo Enter passphrase for rsa_foo: 12345
但是,當我通過 FIFO 載入密鑰時,它不再詢問:
$ mkfifo -m=600 fifo $ cat rsa_foo >fifo | ssh-add fifo
它給了我以下錯誤:
- 作業系統:
ssh_askpass: exec(/usr/libexec/ssh-askpass): 沒有那個文件或目錄
- Linux(Ubuntu):
ssh_askpass: exec(/usr/bin/ssh-askpass): 沒有那個文件或目錄
這在 RSA 密鑰文件沒有密碼時有效。
如何修復上述錯誤以便
ssh-add
可以正常詢問密碼(或者我可以以某種方式傳遞給它)?我的目標是使用 FIFO 載入這個 RSA 密鑰。
它確實要求我輸入密碼:
$ ls -l fifo prw------- 1 glopes users 0 Out 11 03:59 fifo $ ssh-add fifo Enter passphrase for fifo:
然後從另一個終端載入密鑰:
$ cat id_rsa > fifo
或嘗試以下單線:
$ (cat id_rsa > fifo &); ssh-add fifo
就在終端上,無需呼叫
$SSH_ASKPASS
,如手冊所述:如果 ssh-add 需要密碼,如果它是從終端執行的,它將從目前終端讀取密碼。如果 ssh-add 沒有與之關聯的終端但已設置
DISPLAY
,SSH_ASKPASS
它將執行SSH_ASKPASS
(預設為 ``ssh-askpass)’’ 指定的程序並打開 X11 視窗以讀取密碼。您始終可以通過在將密鑰傳遞給 ssh-add 之前顯式解密密鑰來解決它。