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 [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-agent
にロードされたSSHキーのすべてのフィンガープリントです。
内部ループはfor
ループで、このパターン~/.ssh/*.pub
に一致するすべてのファイルのコンテンツを通過します。ファイルごとにssh-keygen -lf <file>
で問い合わせてから、この出力の最初の列を削除します。
...前...
4096 SHA256:mwvSCr2CXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX [email protected]
...後...
SHA256:mwvSCr2CXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX [email protected]
次に、この文字列がファイルの名前とともに出力されます。
printf "%s%s\n" "$(ssh-keygen -lf" $ file "| awk '{$ 1 =" "} 1')" "$ file"
このループの実行が終了すると、次のようになります。
|列-t | grep "$ line" || 「$ line」をエコー
これにより、列がフォーマットされるように出力がフォーマットされます(column -t
)。
この時点で、ssh-add
を介したgrep "$line"
からのフィンガープリントの出力を確認します。一致が見つかった場合は、printf
出力を出力します。それ以外の場合は、ssh-add
、$line
からの元の指紋の出力にフォールバックします。