ssh-keyscan は SSH の ProxyCommand オプションを受け付けません。そのため ssh 用に設定したプロキシが、別個のスキャナを自動的に設定するわけではありません。

ひとつの方法は、すでに確立済みのローカル TCP リレーを使うことです。必要なプロキシ認証と CONNECT 交換を完了し、目的の SSH サーバーのバイトストリームを公開します。そのリレーが 127.0.0.1:2222 で待ち受けている場合:

ssh-keyscan -p 2222 127.0.0.1 > candidate.keys
ssh-keygen -lf candidate.keys

最初のコマンドが候補鍵を集め、2 番目がそのフィンガープリントを表示します。リレーは HTTP ヘッダーをスキャナに渡すのではなく、プロキシ応答を最後まで消費した後に SSH ストリームを通す必要があります。

出力のホストラベルはローカルリレーのエンドポイントを表します。そのまま追記して、リモートの SFTP ホスト名を指すとみなさないでください。

鍵を known_hosts の実際のホストとポートに関連付ける前に、信頼できる記録か管理者を通じてフィンガープリントを検証してください。ssh-keyscan は到達可能なエンドポイントが提示するものを集めるだけであり、プロキシ接続の成功がその鍵を認証するわけではありません。

関連記事