LAN経由でSSH経由で別のUbuntuマシンに接続できます。両方のPCに openssh-server をインストールしましたが、別のUbuntuコンピューターからSSH経由でPCに接続できず、このエラーが発生しました:
ホストキーの検証に失敗しました...
「ホストキーの検証に失敗しました」は、リモートホストのHostキーが変更されたことを意味します。
SSHは、リモートホストのホストキーを~/.ssh/known_hosts
に保存します。そのテキストファイルを手動で編集して古いキーを削除するか(エラーメッセージで行番号を確認できます)、または
ssh-keygen -R hostname
manページ から:
-Rホスト名
known_hostsファイルからホスト名に属するすべてのキーを削除します。このオプションは、ハッシュされたホストを削除するのに便利です。
( SSHのknown_hostsファイルから特定のホストキーを削除することは可能ですか? )への回答から学びました。
ホストキーの追加プロンプトへのインタラクティブなアクセスができない特定のリモート/スクリプトの状況で実行している場合、次のように回避してください:
$ ssh -o StrictHostKeyChecking=no [email protected] uptime
警告:既知のホストのリストに「something.example.com、10.11.12.13」(RSA)を永久に追加しました。
また、シリアルコンソールで作業しているときに、上記のコマンドを冗長モード-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
をリモートの場所に追加して、パスワードが要求されないようにし、ログインアクセスを取得します。
私の場合、これはudevの問題が原因でした-/dev/tty
デバイスノードがありませんでした。私にとっての解決策はただ:
Sudo mknod -m 666 /dev/tty c 5 0
ターミナルで:
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]
それは、2番目のubuntuがパスワードではなくキーによる接続を必要とするからです。
PCでSudo dpkg-reconfigure openssh-server
を使用することをお勧めします。そうすれば、正しく動作するはずです。 opensshの構成をリセットし、デフォルトのパスワード認証に戻るはずです。
2番目の可能性は、PCに他のUbuntuのキーが既にあり、それが変更されて認識されなくなったということです。この場合、.ssh/authorized_keys
ファイルを編集して、ubuntuを識別する問題のある行を削除する必要があります。
これは古いスレッドであり、この答えに出くわしました。これを解決するために行ったことを追加します。
ssh-keygen -f "/home/USER/.ssh/known_hosts" -R HOSTNAME
私はそれが私に投げたエラーメッセージを見て、ホストのリストからそれを削除するためにそのコマンドを実行するように言った。その後、次のことを行いました。
ssh-copy-id HOSTNAME
サーバーにsshできるまで、そこからプロンプトに従いました。
これは、リモートホストキーが変更されたことを意味します(ホストパスワードの変更の可能性があります)。
端末は、このコマンドを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
これがうまくいくことを願っています。
この方法でキーを変更する必要があります:指定されたエラーから、たとえば変更されたホストキーを見つけます:/Users/user-name/.ssh/known_hosts:5の問題のあるECDSAキーは、5番目のキーが変更されたので、これを行います:
sed -i '5d' ~/.ssh/known_hosts
注意:あなたはrootであるか、Sudoの権限を持っている必要があります。
ホストキーチェックを厳密に無効にする以外に、次のように入力して接続することもできます。
ssh -o LogLevel=quiet -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no <username@target_machine_ip_or_domain_name>
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と入力する必要があります。
ターゲットでこれを実行することにより、ターゲットホストのrsaキーをソースホスト/home/user/.ssh/known_hosts
に配置する必要があります
ssh-keyscan -t rsa @targethost
私の解決策は、このブログ投稿から来ています: 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
基本的に、問題を解決できるものが見つかるまで、さまざまな解決策を試しました。上記の解決策が機能しない場合は、これを試してください。これがうまくいかない場合は、他を試してください。
「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
pico ~/.ssh/known_hosts
とすべての行を削除します。再接続すると、新しいキーが取得されます。