web-dev-qa-db-ja.com

「ホストキーの検証に失敗した」ときにsshキーペアを確立する方法

デスクトップと2台のサーバーの間にsshキーペアを設定し、サーバーからデスクトップに移動しましたが、デスクトップにOSを再インストールした後、これによってデスクトップにキーペアを再確立できません。

mkdir ~/.ssh
chmod 700 ~/.ssh
ssh-keygen -t 
ssh-copy-id username@server

次のエラーが表示されます。

italicsの名前は無邪気なものを保護するために変更されました私のデスクトップはUbuntuで、答えが見つかりません here

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@ @警告:リモートホストIDが変更されました! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@ IT IS誰かがIS Doing SOMETHING NASTY!誰かがあなたを盗聴している可能性がある(man-in -中間攻撃)!また、RSAホストキーが変更された可能性がありますリモートホストによって送信されたRSAキーのフィンガープリントは、ab:cd:ef:ghシステム管理者に連絡してください/home/user/.ssh/known_hostsに正しいホストキーを追加して削除しますこのメッセージ。/home/user/.ssh/known_hosts:1の攻撃キーuserのRSAホストキー。 serverが変更され、厳密なチェックを要求しました。ホストキーの検証に失敗しました。

48
David LeBauer
ssh-keygen -R hostname

これにより、known_hostsから問題のあるキーが削除されます

マニュアルページのエントリは次のとおりです。

-R hostname known_hostsファイルからホスト名に属するすべてのキーを削除します。このオプションは、ハッシュされたホストを削除するのに役立ちます(上記の-Hオプションを参照)。

112
RobAu

ほとんどの場合、リモートホストIPまたはip_aliasは〜/ .ssh/known_hostsファイルにありません。次のコマンドを使用して、ホスト名をknown_hostsファイルに追加できます。

$ssh-keyscan -H -t rsa ip_or_ipalias >> ~/.ssh/known_hosts

また、特定のipまたはipaliasがknow_hostsファイルにあるかどうかを確認する次のスクリプトを生成しました。

#!/bin/bash
#Jason Xiong: Dec 2013   
# The ip or ipalias stored in known_hosts file is hashed and   
# is not human readable.This script check if the supplied ip    
# or ipalias exists in ~/.ssh/known_hosts file

if [[ $# != 2 ]]; then
   echo "Usage: ./search_known_hosts -i ip_or_ipalias"
   exit;
fi
ip_or_alias=$2;
known_Host_file=/home/user/.ssh/known_hosts
entry=1;

cat $known_Host_file | while read -r line;do
  if [[ -z "$line" ]]; then
    continue;
  fi   
  hash_type=$(echo $line | sed -e 's/|/ /g'| awk '{print $1}'); 
  key=$(echo $line | sed -e 's/|/ /g'| awk '{print $2}');
  stored_value=$(echo $line | sed -e 's/|/ /g'| awk '{print $3}'); 
  hex_key=$(echo $key | base64 -d | xxd -p); 
  if  [[ $hash_type = 1 ]]; then      
     gen_value=$(echo -n $ip_or_alias | openssl sha1 -mac HMAC \
         -macopt hexkey:$hex_key | cut -c 10-49 | xxd -r -p | base64);     
     if [[ $gen_value = $stored_value ]]; then
       echo $gen_value;
       echo "Found match in known_hosts file : entry#"$entry" !!!!"
     fi
  else
     echo "unknown hash_type"
  fi
  entry=$((entry + 1));
done
12
Jason Xiong

ステップ1:$ Bhargava.ssh#

ssh-keygen -R 199.95.30.220

step2:$ Bhargava.ssh#

ssh-copy-id [email protected]

          Enter the the password.........

ステップ3:Bhargava .ssh#

ssh [email protected]

Welcome to Ubuntu 14.04.3 LTS (GNU/Linux 3.13.0-68-generic x86_64) * Documentation: https://help.ubuntu.com/ Ubuntu 14.04.3 LTS server : 228839 ip : 199.95.30.220 hostname : qt.example.com System information as of Thu Mar 24 02:13:43 EDT 2016 System load: 0.67 Processes: 321 Usage of /home: 5.1% of 497.80GB Users logged in: 0 Memory usage: 53% IP address for eth0: 199.95.30.220 Swap usage: 16% IP address for docker0: 172.17.0.1 Graph this data and manage this system at: https://landscape.canonical.com/ Last login: Wed Mar 23 02:07:29 2016 from 103.200.41.50

hostname @ qt:〜$

5
Batchu Bhargava

sureサーバーが正しい場合、sed -i 1d ~/.ssh/known_hostsはローカル~/.ssh/known_hostsの1行目を削除します。次回接続すると、新しい正しいキーがファイルに追加されます。

5
ephemient

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

上記の場合、/ dev/ttyを削除して、/ dev/ttyS0から/ dev/ttyへのシンボリックリンクを作成するだけです。

2
peeyush

まず、既存のキーを削除する必要があります。ほとんどのLinuxベースのOSのSSHキーはこのファイル「/root/.ssh/known_hosts」に保存されるため、ホストに関連するキーを削除するには、次のコマンドを使用します。

ssh-keygen -f "/root/.ssh/known_hosts" -R [Hostname]

よろしくK1

0
Keivan
rm -f /home/user/.ssh/known_hosts

または、それを開いて、問題のあるip/hostnameのエントリを削除します

(追記:投稿したエラーメッセージでこれを正確に示しています)

0
Matt Phillips

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

端末は、このコマンドを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

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

0
Jay Patel