ssh-add
どのキーが私のキーに追加されたのか、どこで確認できますかssh-agent
?
答え1
ssh-add -l
指紋としてリストするために使用されます。
$ ssh-add -l
2048 72:...:eb /home/gert/.ssh/mykey (RSA)
またはssh-add -L
OpenSSH形式でフルキーを取得します。
$ ssh-add -L
ssh-rsa AAAAB3NzaC1yc[...]B63SQ== /home/gert/.ssh/id_rsa
後者の形式は~/.ssh/authorized_keys
ファイルに入れるのと同じです。
答え2
驚くべきことに、MacOSバージョンはssh-add
Linuxバージョンと同様に、ある時点でファイル名の表示を停止します。私はこのスクリプトを書いています~/.ssh/
。
関数ssh-add_wf
wf = with fileを呼び出します。関数の詳細は次のとおりです。
$ 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 [email protected] (RSA) /Users/myuser/.ssh/[email protected]_id_rsa.pub
SHA256:qInIrnKcXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX [email protected] (RSA) /Users/myuser/.ssh/[email protected]_id_rsa.pub
SHA256:tX+AAJA0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
SHA256:EyNkhTLQXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX [email protected] (RSA) /Users/myuser/.ssh/[email protected]_id_rsa.pub
SHA256:KKKVwtvFXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
SHA256:tr0hZP52XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
ssh-add
上記では、ディレクトリ内のファイルと一致する出力のすべてのキーは、出力の~/.ssh/
4番目の列に含まれる対応するファイルの名前を持ちます。存在しないキーがある場合、列は消去されます。この出力には、一致するファイルを含む3つのキーがあります。
機能力学
スクリプトは2つのループを使用します。外部ループはwhile
出力を許可することですssh-add
。この出力は、にロードされたすべてのSSHキーの指紋ですssh-agent
。
内部ループは、for
このパターンに一致するすべてのファイルの内容を繰り返すループです~/.ssh/*.pub
。各ファイルについて調査したssh-keygen -lf <file>
後、この出力の最初の列を削除します。
...これから...
4096 SHA256: mwvSCr2CXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX [Eメール保護]
...後ろに...
SHA256:mwvSCr2CXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX [Eメール保護]
これにより、この文字列がファイル名とともに印刷されます。
printf "%s %s\n" "$(ssh-keygen -lf "$file" | awk '{$1=""}1')" "$file"
ループ実行終了時の結果は次のとおりです。
|熱-t | grep "$line" ||
これは出力形式を列形式()で指定しますcolumn -t
。
ssh-add
この時点で、我々はを通じて指紋の出力を表示しますgrep "$line"
。一致するものが見つかった場合は出力を印刷し、そうでない場合はprintf
元のssh-add
指紋を印刷します$line
。