我在桌面和两台服务器之间以及从服务器到桌面之间设置了ssh密钥对,但在桌面上重新安装操作系统之后,我无法通过以下方式重新建立进入我桌面的密钥对:
mkdir ~/.ssh
chmod 700 ~/.ssh
ssh-keygen -t
ssh-copy-id username@server
我收到以下错误:
(斜体中的名称已更改以保护无辜的我的桌面是Ubuntu,我找不到答案 here)
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@ @警告:远程主机识别已更改! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@ 有可能是某人做的很棒! 有人可能正在偷听你(中间人) 攻击)! RSA主机密钥也可能刚刚更改。 远程主机发送的RSA密钥的指纹是 AB:CD:EF:GH 请联系您的系统管理员。 在/home/user/.ssh/known_hosts中添加正确的主机密钥 摆脱这个消息。 在/home/user/.ssh/known_hosts:1中攻击密钥 user.server 的RSA主机密钥已更改,您已请求严格 检查。 主机密钥验证失败。
答案 0 :(得分:108)
ssh-keygen -R hostname
这会从known_hosts
手册页条目显示:
-R hostname
从known_hosts文件中删除属于hostname的所有密钥。此选项对于删除散列主机很有用(请参阅-H选项 上文)。
答案 1 :(得分:10)
最有可能的是,远程主机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
答案 2 :(得分:5)
如果您确定服务器正确无误,sed -i 1d ~/.ssh/known_hosts
将删除您本地~/.ssh/known_hosts
的第1行。下次连接时,新的正确密钥将添加到文件中。
答案 3 :(得分:5)
Step1:$ Bhargava.ssh#
ssh-keygen -R 199.95.30.220
第二步:$ Bhargava.ssh#
ssh-copy-id hostname@199.95.30.220
Enter the the password.........
第3步:Bhargava .ssh#
ssh hostname@199.95.30.220
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:〜$
答案 4 :(得分:2)
有时也会出现在串行控制台上工作的情况,然后在详细模式下检查上面的命令-v
会显示/ dev / tty不存在,而它确实存在。
在上面的例子中,只需删除/ dev / tty并在/ dev / tty中创建/ dev / ttyS0的符号链接。
答案 5 :(得分:1)
当主机密钥过期或更改时,会出现此问题。您可以删除主机正在使用的密钥,然后尝试再次使用ssh,以便添加客户端和服务器都知道的新密钥。
您可以使用cat /.ssh/known_hosts
检查与主机关联的密钥。现在,您可以手动或使用ssh-keygen选项删除主机密钥。您可以执行以下任一操作。
手动取下钥匙
vim /.ssh/known_hosts
删除与主机关联的密钥。
使用ssh-keygen删除密钥
ssh-keygen -R your_host_or_host_ip
这将删除与主机关联的密钥。
现在,您可以像往常一样ssh到主机,然后将询问您是否要继续使用此主机。输入“是”后,此主机将使用更新的密钥添加到您的/.ssh/known_hosts中。现在,您应该成为您的主机。
答案 6 :(得分:0)
rm -f /home/user/.ssh/known_hosts
或打开它并删除有问题的ip / hostname
的条目(P.S。它在您发布的错误消息中告诉您这一点)
答案 7 :(得分:0)
表示您的远程主机密钥已更改(可能是主机密码更改),
您的终端建议以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 root@www.website.net -p 4231 // Try again
我希望这有效。
答案 8 :(得分:0)
首先,您应该删除现有密钥。大多数基于Linux的操作系统中的SSH密钥都将保存为“/root/.ssh/known_hosts”,因此为了删除与主机相关的密钥,将使用以下命令:
ssh-keygen -f "/root/.ssh/known_hosts" -R [Hostname]
此致 K1
答案 9 :(得分:0)
当您尝试将远程服务器与ssh连接时:
$ ssh username@ip_address
然后提出错误,加以解决:
$ ssh-keygen -f "/home/local_username/.ssh/known_hosts" -R "ip_address"
答案 10 :(得分:-1)
任务suer的无密码身份验证。
错误:主机密钥验证失败。
来源:10.13.1.11 目标:10.13.1.35
临时解决方法:
[user @ server〜] $ ssh user@10.13.1.35 无法建立主机“ 10.13.1.35(10.13.1.35)”的真实性。 RSA密钥指纹为b8:ba:30:46:a9:ab:70:12:1a:f2:f1:61:69:73:0a:19。 您确定要继续连接(是/否)吗?是 警告:将“ 10.13.1.35”(RSA)永久添加到已知主机列表中。
尝试再次验证用户身份...它将起作用。