如何使用 ssh-add 列出添加到 ssh-agent 的密鑰?
我如何以及在哪裡可以檢查哪些密鑰已添加
ssh-add
到我的ssh-agent
?
使用
-l
選項ssh-add
按指紋列出它們。$ ssh-add -l 2048 72:...:eb /home/gert/.ssh/mykey (RSA)
或使用
-L
以獲取 OpenSSH 格式的完整密鑰。$ ssh-add -L ssh-rsa AAAAB3NzaC1yc[...]B63SQ== /home/gert/.ssh/id_rsa
後一種格式與您將它們放入
~/.ssh/authorized_keys
文件中的格式相同。
令人驚訝的是,MacOS 版本
ssh-add
在某些時候停止顯示文件名,就像 Linux 變體一樣。我編寫了這個腳本,它對在~/.ssh/
.我用文件呼叫函式
ssh-add_wf
,wf =。該功能的詳細資訊如下:$ type ssh-add_wf ssh-add_wf is a function ssh-add_wf () { while read -r line; do for file in ~/.ssh/*.pub; do printf "%s %s\n" "$(ssh-keygen -lf "$file" | awk '{$1=""}1')" "$file"; done | column -t | grep --color=auto "$line" || echo "$line"; done < <(ssh-add -l | awk '{print $2}') }
例子
$ ssh-add_wf SHA256:mwvSCr2CXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX myuser@mydom.lan (RSA) /Users/myuser/.ssh/ssh_myuser@mydom.lan_id_rsa.pub SHA256:qInIrnKcXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX myuser@mydom.com (RSA) /Users/myuser/.ssh/github_myuser@mydom.com_id_rsa.pub SHA256:tX+AAJA0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX SHA256:EyNkhTLQXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX myuser@mydom.com (RSA) /Users/myuser/.ssh/ssh_myuser@mydom.com_id_rsa.pub SHA256:KKKVwtvFXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX SHA256:tr0hZP52XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
ssh-add
上面,與目錄中的文件匹配的輸出中的任何鍵都~/.ssh/
將在第 4 列的輸出中包含文件名。任何沒有的鍵都會使該列為空。在此輸出中,我們有 3 個具有匹配文件的鍵。功能力學
該腳本使用 2 個循環。外部循環是 a
while
,它接受 的輸出ssh-add
。此輸出是載入到ssh-agent
.內部循環是一個
for
循環,它遍歷與此模式匹配的所有文件的內容,~/.ssh/*.pub
. 對於每個文件,我們都會對其進行詢問,ssh-keygen -lf <file>
然後刪除此輸出的第一列:…前…
4096 SHA256:mwvSCr2CXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
…後…
SHA256:mwvSCr2CXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX myuser@mydom.lan
然後將此字元串與文件名一起列印:
printf “%s %s\n” " $ (ssh-keygen -lf " $ 文件" | awk ‘{ $ 1=""}1’)" " $ 文件”
在這個循環的執行結束時如下:
| 列-t | grep" $ line" || echo " $ 線”
這會格式化輸出,使其成為列格式 (
column -t
)。在這一點上,我們
ssh-add
通過grep "$line"
. 如果找到匹配,我們列印我們的printf
輸出,否則我們回退到只列印來自ssh-add
,的原始指紋$line
。參考