指紋がわかっている場合は、SSHホストキーをプログラムで受け入れるにはどうすればよいですか?

指紋がわかっている場合は、SSHホストキーをプログラムで受け入れるにはどうすればよいですか?

オプションを使用したくありませんが、-o StrictHostKeyChecking=noサーバーの公開鍵をファイルに保存し、IPアドレスまたはポートが変更されても、すべての接続でそれを使用したいと思います。

このオプションを使用すると、-o UserKnownHostsFile=myfile異なるIPを介して同じシステムに接続すると、sshは引き続き認証を要求します。

ssh公開鍵を別の場所に保存し、現在の接続でその公開鍵を使用する方法を教えてください。使用例:

# there is no 'foo-public.key' file at this moment
ssh -o TheMagicalOption=foo-public.key [email protected] -p 1234

The authenticity of host 'xxxxxxxx' can't be established.
ECDSA key fingerprint is SHA256:LR5wDKrEmHD0QhRcAmxTxBnzWIRmNUfJyeawhKw+W38.
Are you sure you want to continue connecting (yes/no)? [YES]

# 'foo-public.key' is created at this point 
on-target $ exit 

# another port forward is made, so the same server is on port 5678
ssh -o TheMagicalOption=foo-public.key [email protected] -p 5678
# not asking the same verification question
on-target $     

ベストアンサー1

あなたはそれを使用することができます

ssh -o StrictHostKeyChecking=ask \
    -o HashKnownHosts=no \
    -o CheckHostIP=no \
    -o UserKnownHostsFile=example_fp \
    -p 1234 [email protected]

鍵を入手してください。

  • HashKnownHosts=noホスト名がプレーンテキストで保存されていることを確認してください。
  • CheckHostIP=no名前でホストを識別するためにのみ使用されます。

結果はexample_fp次から始まる行になります。

[example.com]:1234 ecdsa-sha2-nistp521 AAAA...

最初の接続で標準ポート22を使用すると、次の内容が表示されます。

example.com ecdsa-sha2-nistp521 AAAA...

そのため、最初に接続するときにポート22を使用するか、後でファイルを編集してポート番号を削除してください。次回接続すると、この行はすべてのポート番号と一致します。

おすすめ記事