LAN内の別のUbuntuマシンにSSH経由で接続できます。両方のPCにopenssh-serverをインストールしました が、別のUbuntuコンピューターからSSH経由でPCに接続できず、このエラーが発生しました:
ホストキーの検証に失敗しました...
ssh
コマンドラインからのいずれかで発生する可能性があります。
LAN内の別のUbuntuマシンにSSH経由で接続できます。両方のPCにopenssh-serverをインストールしました が、別のUbuntuコンピューターからSSH経由でPCに接続できず、このエラーが発生しました:
ホストキーの検証に失敗しました...
ssh
コマンドラインからのいずれかで発生する可能性があります。
回答:
「ホストキーの検証に失敗しました」は、リモートホストのホストキーが変更されたことを意味します。
SSHは、リモートホストのホストキーをに保存します~/.ssh/known_hosts
。そのテキストファイルを手動で編集して古いキーを削除するか(エラーメッセージで行番号を確認できます)、または
ssh-keygen -R hostname
以下からのmanページ:
-R hostname hostnameに
属するすべてのキーをknown_hostsファイルから削除します。このオプションは、ハッシュされたホストを削除するのに便利です。
(これは私は答えから学んだことは 、それはSSHのknown_hostsファイルから特定のホストキーを削除することは可能ですか?)。
rm ~/.ssh/*
、ssh -o BatchMode=yes root@somewhere
他に何も問題がHost key verification failed.
ない場合、常に対話型であるが重要ではないが、同じエラーが発生したスクリプトに関連する場合は重要ではありません。
ssh-keygen -R example.net:7999
得られHost example.net:7999 not found in known_hosts
ます。
known_hosts
ファイルとsshを再び削除しました。動いた。
~/.ssh/known_hosts
読めない
ホストキーへのプロンプトへのインタラクティブなアクセスができない特定のリモート/スクリプトの状況で実行している場合、次のように回避してください:
$ ssh -o StrictHostKeyChecking=no user@something.example.com uptime
警告:既知のホストのリストに「something.example.com、10.11.12.13」(RSA)を永続的に追加しました。
sh """ssh -o StrictHostKeyChecking=No ec2-user@someIpAddress-e2e sudo service tomcat restart"""
また、シリアルコンソールで作業しているときに、冗長モードで上記のコマンドをチェックすると、存在しているのに存在しない-v
ことが示される場合/dev/tty
があります。
ssh -v user@hostname
上記の場合/dev/tty
、/dev/ttyS0
toのシンボリックリンクを削除して作成し/dev/tty
ます。
rm /dev/tty
ln -s /dev/ttyS0 /dev/tty
別の方法として、id_rsa.pub
リモートの場所に追加して、パスワードが要求されないようにし、ログインアクセスを取得します。
ターミナルで:
ssh -o StrictHostKeyChecking=no -i YourPublicKey.pem user@example.com 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 user@example.com
command-line line 0: Bad yes/no/ask argument.
あなたが誤って引数としてに「いいえ」の代わりに「いいえ」のを使用しないためStrictHostKeyChecking
リモートホストキーが変更されたことを意味します(ホストパスワードの変更の可能性があります)。
端末は、このコマンドをrootユーザーとして実行することを提案しました
$ ssh-keygen -f "/root/.ssh/known_hosts" -R [www.website.net]:4231
そのホスト名をpc / serverのホストリストから削除する必要があります。その推奨コマンドをコピーして、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 root@www.website.net -p 4231 // Try again
これがうまくいくことを願っています。
この方法でキーを変更する必要があります:指定されたエラーから、たとえば変更されたホストキーを見つけます:/Users/user-name/.ssh/known_hosts:5の問題のあるECDSAキーは、5番目のキーが変更されたので、これを行います:
sed -i '5d' ~/.ssh/known_hosts
注意:rootになるか、sudoの特権が必要です。
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と入力する必要があります。
pico ~/.ssh/known_hosts
再接続するとすべての行が削除され、新しいキーが取得されます。
ssh-keygen -R hostname
方が優れています。
私の解決策はこのブログ投稿から来ています: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 pi@192.168.0.45
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ 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から行を削除し、変更を保存して再接続します。