質問: ssh-addを使用してssh-agentに追加されたキーを一覧表示する方法は? ssh-addでssh-agentに追加されたキーを確認する方法と場所を教えてください。
回答: 驚いたことに、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つのループを使用します。外側のループはwhileで、ssh-addの出力を受け取ります。この出力は、ssh-agentにロードされたsshキーのすべてのフィンガープリントです。内部ループはforループで、このパターン~/.ssh/*.pubに一致するすべてのファイルのコンテンツを通過します。ファイルごとにssh-keygen -lf <file>で問い合わせてから、この出力の最初の列を削除します。...前... 4096 sha256:mwvscr2cxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx myuser@mydom.lan ...後... sha256:mwvscr2cxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx myuser@mydom.lan 次に、この文字列がファイルの名前とともに出力されます。 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からの元の指紋の出力にフォールバックします。参考文献 ssh公開鍵のフィンガープリントの確認