このマテリアルを使用してsshセットアップを強化しようとしています。正常に動作しますが、答えを見つけるのに苦労している質問があります。
SSH CAに対してsshホスト/ユーザー証明書の署名をチェックする方法があるかどうか誰かが知っていますか?そのホスト証明書を保持しているホストにSSHで接続することができ、署名よりも接続されている場合は明らかに問題ないことを知っています…
しかし、自動化タスクを作成しているので、それを確認するためのプログラム的な方法が必要です。証明書ファイルはCAによって署名されています。 ssh-keygen
と言ってください コマンドまたはその他。
更新:
@PKappが提案したように:
2つの出力を比較できます。サーバー側の証明書からの署名CAのフィンガープリントとCA自体のフィンガープリント
sudo ssh-keygen -L -f /etc/ssh/ssh_host_ed25519_key-cert.pub | fgrep "Signing CA" | sed 's/^[ t]*//' | cut -d ' ' -f 4
SHA256:LkdPQLdx4tuZp7pG0g6nAJqilFd6ZzjGdgVEV9elrdA
sudo ssh-keygen -l -f /etc/ssh/id_ed25519-HostCA.pub | cut -d ' ' -f 2
SHA256:LkdPQLdx4tuZp7pG0g6nAJqilFd6ZzjGdgVEV9elrdA
フィルタリングされた出力が同一である場合、証明書は一致します…
承認された回答:
sshホスト証明書をリモートで取得するには、ssh-keyscan -c <hostname>
を使用できます。 (-c
なし オプションの場合、ホストキーのみを取得します)。特定の証明書タイプに制限するには、-t type
を含めることができます 、ssh-rsa
を使用 [email protected]
ではありません 、必要に応じて。
次に、ssh-keygen -L -f <certfile>
を使用して、署名CAの公開鍵を含む証明書の詳細を抽出できます。 。 (小文字の)-l
を使用する場合 代わりに、ssh-keygen
すべての証明書要素ではなく、証明書に埋め込まれている基になる(公開)ホストキーに関する情報のみを出力します。