项目场景:
a电脑ssh连接局域网内另一台ubuntu20.04电脑b。
a电脑系统:ubuntu20.04
b电脑系统:ubuntu20.04
问题描述
远程连接命令:ssh m@192.168.0.108
a电脑终端报错如下:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ 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:QSvBy9Hf/oL7GWe75JzVGWm8dP9HfYBq+m7WJcguNzs. Please contact your system administrator. Add correct host key in /home/ros2/.ssh/known_hosts to get rid of this message. Offending ECDSA key in /home/ros2/.ssh/known_hosts:3 remove with: ssh-keygen -f "/home/ros2/.ssh/known_hosts" -R "192.168.0.108" ECDSA host key for 192.168.0.108 has changed and you have requested strict checking. Host key verification failed.
原因分析:
b电脑最近重装了系统和ssh服务,导致公钥发生改变。
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
翻译过来就是
警告:远程主机标识已更改!ssh服务是通过公钥和私钥来进行连接的,它会把每个曾经访问过计算机或服务器的公钥,记录在~/.ssh/known_hosts 中,当下次访问曾经访问过的计算机或服务器时,ssh就会核对公钥,如果和上次记录的不同,OpenSSH会发出警告。
解决方案:
1 稳妥方法,对于比较重要的电脑,重命名 known_hosts,重命名后的文件在系统里面已经不再起作用,但是相当于给原文件作了备份,如果需要可以随时还原回来,命令 :
mv ~/.ssh/known_hosts ~/.ssh/known_hosts1
2 简单方法,学习或者玩的不重要的电脑,直接删除known_hosts,这个文件重新ssh连接主机会再次自动生成。
重新打开终端ssh远程连接:
ssh m@192.168.0.108
输入yes
就又可以ssh远程连接了。
为了学习你也可以重新进入著目录.ssh文件夹,这个文件夹默认是隐藏的,看不到的话摁ctrl+h,隐藏文件就可见了。你可以看到known_hosts文件又自动生成了。
多的那个known_hosts1不起作用,只是作为一个备份留在了文件夹里面。