177

マシンに ssh すると、このエラー警告が表示され、「はい」または「いいえ」と言うプロンプトが表示されることがあります。これにより、他のマシンに自動的に ssh するスクリプトから実行するときに問題が発生します。

警告メッセージ:

The authenticity of host '<host>' can't be established.
ECDSA key fingerprint is    SHA256:TER0dEslggzS/BROmiE/s70WqcYy6bk52fs+MLTIptM.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'pc' (ECDSA) to the list of known hosts.

自動的に「はい」と言うか、これを無視する方法はありますか?

4

19 に答える 19

150

sshクライアントによっては、コマンドラインでStrictHostKeyCheckingオプションをnoに設定したり、キーをnullのknown_hostsファイルに送信したりできます。これらのオプションは、すべてのホストに対して、または特定のIPアドレスまたはホスト名のセットに対して、構成ファイルで設定することもできます。

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no

編集

@IanDunnが指摘しているように、これを行うにはセキュリティ上のリスクがあります。接続しているリソースが攻撃者によってスプーフィングされた場合、攻撃者は宛先サーバーのチャレンジを再生して、実際にはリモートリソースに接続しているのに、リモートリソースに接続していると思わせる可能性があります。あなたの資格。HostKeyCheckingをスキップするように接続メカニズムを変更する前に、それが適切なリスクであるかどうかを慎重に検討する必要があります。

参照

于 2010-09-08T01:26:14.313 に答える
87

より良い答えに値する古い質問。

無効にせずに対話型プロンプトを防ぐことができますStrictHostKeyChecking(これは安全ではありません)。

次のロジックをスクリプトに組み込みます。

if [ -z "$(ssh-keygen -F $IP)" ]; then
  ssh-keyscan -H $IP >> ~/.ssh/known_hosts
fi

サーバーの公開鍵が にあるかどうかをチェックしますknown_hosts。そうでない場合は、サーバーに公開鍵を要求し、それを に追加しますknown_hosts

このようにして、中間者攻撃に一度だけさらされます。これは、次の方法で緩和される可能性があります。

  • スクリプトが安全なチャネルを介して最初に接続することを確認する
  • ログまたは既知のホストを調べてフィンガープリントを手動でチェックする (1 回だけ実行)
于 2014-07-29T16:44:01.433 に答える
41

無効にする (または無効にすることを制御する) には、次の行を/etc/ssh/ssh_config...の先頭に追加します。

Host 192.168.0.*
   StrictHostKeyChecking=no
   UserKnownHostsFile=/dev/null

オプション:

  • ホスト サブネットは*、すべての IP への無制限のアクセスを許可することができます。
  • /etc/ssh/ssh_configグローバル構成または~/.ssh/configユーザー固有の構成用に編集します。

http://linuxcommando.blogspot.com/2008/10/how-to-disable-ssh-host-key-checking.htmlを参照してください。

superuser.com に関する同様の質問 - https://superuser.com/a/628801/55163を参照してください

于 2013-08-22T21:12:49.600 に答える
22

書き込み可能であることを確認してください~/.ssh/known_hosts。それは私のためにそれを修正しました。

于 2014-02-18T12:36:54.150 に答える
17

これを行う最善の方法は、「StrictHostKeyChecking」に加えて「BatchMode」を使用することです。このように、スクリプトは新しいホスト名を受け入れてそれを known_hosts ファイルに書き込みますが、yes/no の介入は必要ありません。

ssh -o BatchMode=yes -o StrictHostKeyChecking=no user@server.example.com "uptime"
于 2014-06-18T19:10:17.223 に答える
8

この警告はセキュリティ機能が原因で発行されます。この機能を無効にしないでください。

一度だけ表示されます。

2 回目の接続後も表示される場合は、known_hostsファイルへの書き込みに問題がある可能性があります。この場合、次のメッセージも表示されます。

Failed to add the host to the list of known hosts 

所有者を変更して、ファイルのアクセス許可をユーザーが書き込み可能に変更することで修正できます。

sudo chown -v $USER ~/.ssh/known_hosts
于 2015-05-27T07:17:13.163 に答える
5

これを行います -> chmod +w ~/.ssh/known_hosts。これにより、 のファイルに書き込み権限が追加されます~/.ssh/known_hosts。その後known_hosts、次回接続するときにリモートホストがファイルに追加されます。

于 2016-01-27T18:15:20.470 に答える
2

通常、この問題は、キーを頻繁に変更するときに発生します。サーバーによっては、サーバーに生成して貼り付けた新しいキーの更新に時間がかかる場合があります。したがって、キーを生成してサーバーに貼り付けた後、3〜4時間待ってから、試してください。問題を解決する必要があります。それは私と一緒に起こりました。

于 2013-02-05T10:18:27.060 に答える
2

これらを /etc/ssh/ssh_config に追加します

Host *
UserKnownHostsFile=/dev/null
StrictHostKeyChecking=no
于 2019-04-28T10:10:12.820 に答える
0

次の手順は、ホストに対して自分自身を認証するために使用されます

  1. ssh キーを生成します。キーのパスワードを作成するように求められます
ssh-keygen -f ~/.ssh/id_ecdsa -t ecdsa -b 521

(上記は推奨される暗号化手法を使用しています)

  1. キーをリモート ホストにコピーします。
ssh-copy-id -i ~/.ssh/id_ecdsa user@host

NBユーザー@ホストはあなたとは異なります。キーのパスワードではなく、このサーバーのパスワードを入力する必要があります。

  1. サーバーに安全にログインできるようになり、エラー メッセージが表示されなくなりました。
ssh user@host

すべてのソース情報は次の場所にあります: ssh-keygen

于 2020-11-22T17:33:13.473 に答える
-1

私の場合、ホストは不明でyes、質問are you sure you want to continue connecting(yes/no/[fingerprint])?を入力する代わりに、 enter.

于 2020-12-12T00:13:42.500 に答える
-3

以下に書かれたエラーを与える問題を解決します:
エラー:
ホスト 'XXX.XXX.XXX' の信頼性を確立できません。
RSA キーのフィンガープリントは 09:6c:ef:cd:55:c4:4f:ss:5a:88:46:0a:a9:27:83:89 です。

解決策:
1. openSSH ツールをインストールします。
2. コマンド ssh を実行します
。 3. このホストをどのように追加するかを尋ねられます。はいを受け入れます。
4. このホストが既知のホスト リストに追加されます。
5. これで、このホストに接続できるようになりました。

このソリューションは現在機能しています......

于 2013-09-12T11:40:19.757 に答える