既知のホストに対するSSHのホスト検証を回避するにはどうすればよいですか?


169

SSHを使用してサーバーに接続しようとするたびに、次のプロンプトが表示されます。「yes」と入力しますが、これを解決する方法はありますか?

The authenticity of host '111.222.333.444 (111.222.333.444)' can't be established.
RSA key fingerprint is f3:cf:58:ae:71:0b:c8:04:6f:34:a3:b2:e4:1e:0c:8b.
Are you sure you want to continue connecting (yes/no)? 

7
/ dev / nullに、彼らは中央の攻撃:)で男に免疫があると思う人のために存在している
ティム・ポスト

1
最悪の部分:y時間を節約するために入力し、文句を言う:Please type 'yes' or 'no': (hmph)
-ADTC

回答:


234

-oオプションを使用して、

ssh -o "StrictHostKeyChecking no" user@host

1
あなたはフラグ「-i」と交互にIDファイルを使用することをお勧めします
MUYベルギー

代替IDファイルを使用するとどうなりますか?つまり、侵害されたホストに接続している場合、どのような違いが認証方法に影響しますか。侵害されたホストが鍵を盗むことはできないということです。
ダジェフ

102

次の行を/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を参照してください


2
残念ながら私はあなたに一度だけ賛成することができます。KnownHostsを/ dev / nullに設定するのは天才です。
J0hnG4lt 14

1
あなたの最も賢いもの。
ダースEgregious 14

30
ハ!妻に言って
ジムフレッド14

30

これは、新しいホストに初めて接続するときにのみ取得する必要があります。応答後yes、ホストは保存され~/.ssh/known_hosts、次回接続時にプロンプ​​トは表示されません。

~/.ssh/known_hosts何らかの理由(権限の問題など)で記述できない場合は、接続するたびにプロンプ​​トが表示されることに注意してください。


7
質問はとにかくプロンプトを回避するためにありますか?
シャンタンヌ

「CheckHostIP no」を/ etc / ssh / ssh_configファイルに追加してみました。しかし、機能していないようです
シャンタンヌ

2
sudo chown -R user:user .ssh; sudo chmod 700 .ssh; sudo chmod -R 600 .ssh /; ssh-keygen -R $ hostnameとreconnectを実行すると、すべての問題が解決され、ssk_Hostkeyが不正使用された場合にのみ再プロンプトが表示されます。変更されたか、あなたはMITMの犠牲者です。
linuxdev2013

1
それは「毎回」と言うので、この答えは非常に適切です
-tarikakyol

11

最善の方法は(セキュリティを犠牲にしないため)1つのクライアントからすべてのコンピューターに1回接続することです(毎回プロンプトが表示され、常にyesと答えます)。他の回答で指摘したように、キーは〜/ .ssh / known_hostsに保存されます。次に、このファイルを、後で接続する可能性のあるすべてのクライアントコンピューターにコピーします(使用する各ユーザーアカウントに対して)。その後、これらのアカウントはすべてコンピューターを「認識」し、プロンプトは表示されません。

プロンプトを無効にするだけの利点は、SSHがMITM攻撃があるかどうかを実際に確認できることです。


1
127.0.0.1 NoHostAuthenticationForLocalhostはいホスト:あなたは、多くの場合、前方の接続を介してsshであれば、あなたは、/ etc / sshを/ ssh_configのにこれを追加することになるでしょう、けれども
Dagelf

1

認証ではなく確認を無効にする場合は、オプション「-o CheckHostIP = no」を使用できます。

ssh -i sergeys_rsa_key.pem -o CheckHostIP=no brin@8.8.8.8

OPはすでに同じ答えを得て、それを受け入れました。
アヤン

0

これはおそらく、サーバーのIPまたはドメインは同じですが、sshキーが一致しないため、sshキーサーバーが変更されたためです。

/home/$user/.ssh/known_hostsこのメッセージを回避するには、保存されているキーを削除する必要があります。

そのファイル内のすべてのキーを削除して修正したため、このドメイン名に対して新しいトークンが作成されます。


1
キーが変更されると、アットマークのボックスWARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!すべて大文字の非常にいメッセージ生成されます。質問のメッセージは、にエントリがまだない場合にのみ発生しknown_hostsます。
dave_thompson_085

-1

~/.ssh/known_hostsファイルの権限を確認してください。この問題が発生したとき、私のものは間違っていました。私はそれを修正しました:

chmod 0600 ~/.ssh/known_hosts
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.