ssh远程登录报错REMOTE HOST IDENTIFICATION HAS CHANGED!解决方案及原因
来源:互联网 发布:淘宝开源项目 编辑:程序博客网 时间:2024/05/19 20:57
注意,文档中的ip和指纹已经替换为了ip.ip.ip.ip
和aa:...
,以免引起不必要的误会。
icode@test:~/lab/dir/sadf$ ssh remote_name@ip.ip.ip.ip@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 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 isaa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa.Please contact your system administrator.Add correct host key in /home/hicode/.ssh/known_hosts to get rid of this message.Offending ECDSA key in /home/hicode/.ssh/known_hosts:28 remove with: ssh-keygen -f "/home/hicode/.ssh/known_hosts" -R ip.ip.ip.ipECDSA host key for ip.ip.ip.ip has changed and you have requested strict checking.Host key verification failed.
之前使用提示中的
remove with: ssh-keygen -f "/home/hicode/.ssh/known_hosts" -R ip.ip.ip.ip
删除了也就ok了,不过今天说是
/home/hicode/.ssh/known_hosts is not a valid known_hosts file.Not replacing existing known_hosts file because of errors
我也不知道为什么,要下功夫想想原因了。
解决方案:然而登录时候的报错,其中有一句
Offending ECDSA key in /home/hicode/.ssh/known_hosts:28
删除掉文档中第28
行即可
sed -i '28d' /home/hicode/.ssh/know_hosts
此时再登录就和第一次ssh登录就一致了。
why?
大学时候密码学学的不好,大概是私钥加密,公钥解密。 私钥和公钥之间有全映射关系。因此即使想要伪造公钥的同时,也得提供出来伪造的公钥对应的私钥。
阮一峰老师翻译的一篇博客非常通俗易懂,这里附上链接数字签名是什么?
以我的猜测,本次问题可以反映出来如下执行过程。
第一次连接时,服务器将已经生成的公钥(已存放在本地)发送给连接方,连接方没有对应的私钥。
服务器重装之后,生成的公钥发生了变化。连接方存放的还是以前的公钥。因此公钥不匹配。即认同为服务器身份已变。(这种严格验证host方式可以可以在服务器/etc/ssh/sshd.conf
文件中改变,SSH下know_hosts的作用(转))
解决方法是将原来的公钥给删除了,也就是一切重头再来,又开始了第一次的工作。
ssh登陆凭证
hicode@test:~/.ssh$ tree -h.├── [1.9K] known_hosts 自己的私钥+其他已连接的服务器公钥存放└── [ 393] known_hosts.pub 公钥存放0 directories, 2 files
我没有找到对known_hosts
的一些看法,因为大家都在说里面存放了公钥,但是我查看的时候好像档案开头有private key
的存在,怀疑这个文件中还夹杂了自己私钥内容。
两个文件部分内容已用...
来取代
file_content: known_hosts
-----BEGIN RSA PRIVATE KEY-----MIIEpgIBAAKCAQEA64x5NuQz1PY3tLHwwu/hdr3f2o5BDcw5u7l/493iEKR3Mbpa......-----END RSA PRIVATE KEY-----|1|KdYUlhdX3x97z38/nKEQQyvBv9k=|ZTzOP8JPfk+kAOQzbnVA9GVmCCs= ecdsa-sha2-nistp256 A...|1|TNRQAp+HHSztEPGOlckiWCJFxQ8=|+XkgfL/fd/v4cHMgmB47dQiHTgU= ecdsa-sha2-nistp256 AA...
为了试验分别连接了两台设备,果然是自己的私钥 +已添加信任的公钥集合。
file_content:know_hosts.pub 存放了自己的公钥
ssh-rsa AAAAB3NzaC1yc2....p hicode@test
同样可以测试一下,发现带有已连接服务器公钥文件的know_hosts文件改动了两次,而自己的公钥文件一直没有改动。
hicode@test:~/.ssh$ ls -lh known_hosts*-rw-r--r-- 1 hicode hicode 2.1K Jul 1 05:26 known_hosts-rw-r--r-- 1 hicode hicode 393 Jun 23 16:16 known_hosts.pubhicode@test:~/.ssh$ date Wed Jul 1 05:58:58 CST 2015
免密码登陆的过程:
免密码登陆是说,服务器相信就是真实的客户机。那么肯定服务器上要有关于真实的定义,这里的真实是指服务器上存放了关于客户机的公钥(服务器上肯定不会存放人家的私钥)。只要验证对方的公钥和服务器上的一致即可。
过程如下:
- 服务器发送字符串str(应该是未加密明文吧)给客户机。
- 客户机将str用自己的私钥加密后的结果发送给服务器。
- 服务器用待验证的客户机公钥解密后发现一致。说明确实是对方。通过。
以上步骤的实现,需要用户事先将自己的公钥发送给服务器留作记录。网上有ssh-keygen
方式生成后传给服务器的,很简单。
但是,我不明白的是know_host.pub
中的公钥不是已经存在了嘛,为什么还要必须生成另外一个公钥id_rsa.pub
呢。。莫非免登陆的时候,协议中规定用的不是know_hosts.pub
中的公钥?
最后附上另外一篇阮老师的文章,很清楚的讲了ssh登陆
过程,就是没有解答我的困惑。
SSH原理与运用(一):远程登录
- ssh远程登录报错REMOTE HOST IDENTIFICATION HAS CHANGED!解决方案及原因
- SSH登录报错REMOTE HOST IDENTIFICATION HAS CHANGED!
- ssh报错:REMOTE HOST IDENTIFICATION HAS CHANGED
- ssh 远程连接失败 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
- SSH登录:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
- ssh登录远程主机失败的问题解决(REMOTE HOST IDENTIFICATION HAS CHANGED)
- Linux SSH 远程登录错误解决办法 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
- ssh REMOTE HOST IDENTIFICATION HAS CHANGED解决
- ssh错误:REMOTE HOST IDENTIFICATION HAS CHANGED
- WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED解决方案
- WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!解决方案
- 重做系统后,ssh报错REMOTE HOST IDENTIFICATION HAS CHANGED!
- REMOTE HOST IDENTIFICATION HAS CHANGED!
- REMOTE HOST IDENTIFICATION HAS CHANGED!
- remote host identification has changed
- SSH连接远程服务器时 REMOTE HOST IDENTIFICATION HAS CHANGED 问题
- Linux 远程ssh连接出现:REMOTE HOST IDENTIFICATION HAS CHANGED解决方法
- SSH登陆错误 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
- NuGet学习笔记(2)——使用图形化界面打包自己的类库
- RocksDB介绍:一个比LevelDB更彪悍的引擎
- 使用AmplifyJS和JQuery编写更好更优雅的javascript事件处理代码
- Linux 命令
- 用RapidMiner搭建推荐系统和评论挖掘系统
- ssh远程登录报错REMOTE HOST IDENTIFICATION HAS CHANGED!解决方案及原因
- iOS 学习路线图
- Django开发(四)——Django的模板
- play基本框架
- 从一个数组中随机的取出若干个不同的数
- 删除输入字符串中的数字,并将大写改小写
- 基于uboot及TFTP通信向开发板烧写程序的详细分析
- ***POJ 3349 Snowflake Snow Snowflakes(哈希)
- 不设密码Win7能否远程连接