web-dev-qa-db-ja.com

「ホストキーの検証に失敗しました...」エラーによるSSH接続の問題

LAN経由でSSH経由で別のUbuntuマシンに接続できます。両方のPCに openssh-server をインストールしましたが、別のUbuntuコンピューターからSSH経由でPCに接続できず、このエラーが発生しました:

ホストキーの検証に失敗しました...

174
Navid

「ホストキーの検証に失敗しました」は、リモートホストのHostキーが変更されたことを意味します。

SSHは、リモートホストのホストキーを~/.ssh/known_hostsに保存します。そのテキストファイルを手動で編集して古いキーを削除するか(エラーメッセージで行番号を確認できます)、または

ssh-keygen -R hostname

manページ から:

-Rホスト名
known_hostsファイルからホスト名に属するすべてのキーを削除します。このオプションは、ハッシュされたホストを削除するのに便利です。

SSHのknown_hostsファイルから特定のホストキーを削除することは可能ですか? )への回答から学びました。

208
elmicha

ホストキーの追加プロンプトへのインタラクティブなアクセスができない特定のリモート/スクリプトの状況で実行している場合、次のように回避してください:

$ ssh -o StrictHostKeyChecking=no [email protected] uptime

警告:既知のホストのリストに「something.example.com、10.11.12.13」(RSA)を永久に追加しました。

126
MarkHu

また、シリアルコンソールで作業しているときに、上記のコマンドを冗長モード-vで確認すると、/dev/ttyが存在する一方で存在しないことがわかります。

ssh -v user@hostname

上記の場合、単に/dev/ttyを削除し、/dev/ttyS0から/dev/ttyへのシンボリックリンクを作成します。

rm /dev/tty
ln -s /dev/ttyS0 /dev/tty

別の方法として、id_rsa.pubをリ​​モートの場所に追加して、パスワードが要求されないようにし、ログインアクセスを取得します。

10
Peeyush

私の場合、これはudevの問題が原因でした-/dev/ttyデバイスノードがありませんでした。私にとっての解決策はただ:

Sudo mknod -m 666 /dev/tty c 5 0
8
Mark

ターミナルで:

ssh -o StrictHostKeyChecking=no -i YourPublicKey.pem [email protected] uptime

次のメッセージまたは類似のメッセージが表示されます。

Warning: Permanently added 'example.com, XX.XXX.XXX.XX' (ECDSA) to the list of known hosts.
 00:47:37 up 3 min,  0 users,  load average: 0.00, 0.00, 0.00

次に、通常どおりEC2に接続します。

ssh -i YourPublickey.pem [email protected]
6
Vitor Abella

それは、2番目のubuntuがパスワードではなくキーによる接続を必要とするからです。

PCでSudo dpkg-reconfigure openssh-serverを使用することをお勧めします。そうすれば、正しく動作するはずです。 opensshの構成をリセットし、デフォルトのパスワード認証に戻るはずです。

2番目の可能性は、PCに他のUbuntuのキーが既にあり、それが変更されて認識されなくなったということです。この場合、.ssh/authorized_keysファイルを編集して、ubuntuを識別する問題のある行を削除する必要があります。

3
MP0

これは古いスレッドであり、この答えに出くわしました。これを解決するために行ったことを追加します。

ssh-keygen -f "/home/USER/.ssh/known_hosts" -R HOSTNAME

私はそれが私に投げたエラーメッセージを見て、ホストのリストからそれを削除するためにそのコマンドを実行するように言った。その後、次のことを行いました。

ssh-copy-id HOSTNAME

サーバーにsshできるまで、そこからプロンプトに従いました。

3
Hatem Jaber

これは、リモートホストキーが変更されたことを意味します(ホストパスワードの変更の可能性があります)。

端末は、このコマンドをrootユーザーとして実行することを提案しました

$ ssh-keygen -f "/root/.ssh/known_hosts" -R [www.website.net]:4231

そのホスト名を、PC /サーバーのホストリストから削除する必要があります。その推奨コマンドをコピーして、rootユーザーとして実行します。

$ Sudo su                                                            // Login as a root user

$ ssh-keygen -f "/root/.ssh/known_hosts" -R [www.website.net]:4231   // Terminal suggested command execute here
Host [www.website.net]:4231 found: line 16 type ECDSA
/root/.ssh/known_hosts updated.
Original contents retained as /root/.ssh/known_hosts.old

$ exit                                                               // Exist from root user

$ Sudo ssh [email protected] -p 4231                              // Try again

これがうまくいくことを願っています。

2
Jay Patel

この方法でキーを変更する必要があります:指定されたエラーから、たとえば変更されたホストキーを見つけます:/Users/user-name/.ssh/known_hosts:5の問題のあるECDSAキーは、5番目のキーが変更されたので、これを行います:

sed -i '5d' ~/.ssh/known_hosts

注意:あなたはrootであるか、Sudoの権限を持っている必要があります。

1
Amir.A.G

ホストキーチェックを厳密に無効にする以外に、次のように入力して接続することもできます。

ssh -o LogLevel=quiet -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no <username@target_machine_ip_or_domain_name>
1
Farshid

Sshが接続を続行することを確認したときに「yes」と入力するだけでよい場合があります。

以下のように。

The authenticity of Host 'xxx' can't be established.
ECDSA key fingerprint is yyy.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'xxx' (ECDSA) to the list of known hosts.
Enter passphrase for key '/Users/ysy/.ssh/id_rsa':

次に、パスワードを入力します。

「接続を続行してもよろしいですか(yes/no)?yes」に注意してください。入力せずに、yesと入力する必要があります。

1
JChen___

ターゲットでこれを実行することにより、ターゲットホストのrsaキーをソースホスト/home/user/.ssh/known_hostsに配置する必要があります

ssh-keyscan -t rsa @targethost
1
rob brennan

私の解決策は、このブログ投稿から来ています: SSH Secure Shell Clientのアルゴリズムネゴシエーションに失敗しました

次のようにファイルを変更する必要があります。

Sudo nano /etc/ssh/sshd_config

そして、次を追加します。

# Ciphers
Ciphers aes128-cbc,aes192-cbc,aes256-cbc,blowfish-cbc,arcfour
KexAlgorithms diffie-hellman-group1-sha1

基本的に、問題を解決できるものが見つかるまで、さまざまな解決策を試しました。上記の解決策が機能しない場合は、これを試してください。これがうまくいかない場合は、他を試してください。

0
Frank Puk

「Sudo vi /var/root/.ssh/known_hosts」を実行して、接続しようとしているホストのキーを保持している行を削除し、再接続します。

あなたの特定の状況については知りませんが、ほとんどの場合、このエラーには次のようなメッセージが伴います。

my_mac:~ oivanche$ Sudo ssh [email protected]
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE Host IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a Host key has just been changed.
The fingerprint for the ECDSA key sent by the remote Host is
SHA256:sx1Z4xyGY9venBP6dIHAoBj0VhDOo7TUVCE2xWXpzQk.
Please contact your system administrator.
Add correct Host key in /var/root/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /var/root/.ssh/known_hosts:74
ECDSA Host key for 192.168.0.45 has changed and you have requested strict checking.
Host key verification failed.

ログをより注意深く読むと、ホストから取得したキーが既に持っているキーと競合していることがわかります。この場合、known_hostsファイルの74行目にあります(/ var /のECDSAキーを無効にします) root/.ssh/known_hosts:74)。 known_hostsから行を削除し、変更を保存して再接続します。

〜/ .ssh/configで厳密なホストキーチェックを無効にするだけです。

Host *
StrictHostKeyChecking no
0
Timo

pico ~/.ssh/known_hostsとすべての行を削除します。再接続すると、新しいキーが取得されます。

0
H0nsu