ssh-addを使用してssh-agentに追加されたキーを一覧表示するにはどうすればよいですか?

ssh-addを使用してssh-agentに追加されたキーを一覧表示するにはどうすればよいですか?

ssh-addどのキーが私のキーに追加されたのか、どこで確認できますかssh-agent

答え1

ssh-add -l指紋としてリストするために使用されます。

$ ssh-add -l
2048 72:...:eb /home/gert/.ssh/mykey (RSA)

またはssh-add -LOpenSSH形式でフルキーを取得します。

$ ssh-add -L
ssh-rsa AAAAB3NzaC1yc[...]B63SQ== /home/gert/.ssh/id_rsa

後者の形式は~/.ssh/authorized_keysファイルに入れるのと同じです。

答え2

驚くべきことに、MacOSバージョンはssh-addLinuxバージョンと同様に、ある時点でファイル名の表示を停止します。私はこのスクリプトを書いています~/.ssh/

関数ssh-add_wfwf = 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

引用する

関連情報