注意,文档中的ip和指纹已经替换为了ip.ip.ip.ipaa:... ,以免引起不必要的误会。

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 is
aa: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.ip
ECDSA 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?

大学时候password学学的不好,大概是私钥加密。公钥解密。 私钥和公钥之间有全映射关系。因此即使想要伪造公钥的同一时候,也得提供出来伪造的公钥相应的私钥。

阮一峰老师翻译的一篇博客非常通俗易懂,这里附上链接数字签名是什么?

以我的推測,本次问题能够反映出来例如以下运行过程。

第一次连接时,server将已经生成的公钥(已存放在本地)发送给连接方,连接方没有相应的私钥。

server重装之后,生成的公钥发生了变化。连接方存放的还是曾经的公钥。

因此公钥不匹配。即认同为server身份已变。

(这样的严格验证host方式能够能够在server/etc/ssh/sshd.conf 文件里改变。SSH下know_hosts的作用(转)

解决方法是将原来的公钥给删除了,也就是一切重头再来。又開始了第一次的工作。

ssh登陆凭证

hicode@test:~/.ssh$ tree -h
.
├── [1.9K] known_hosts 自己的私钥+其它已连接的server公钥存放
└── [ 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

相同能够測试一下。发现带有已连接server公钥文件的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.pub
hicode@test:~/.ssh$ date
Wed Jul 1 05:58:58 CST 2015

免password登陆的过程:

免password登陆是说,server相信就是真实的客户机。

那么肯定server上要有关于真实的定义,这里的真实是指server上存放了关于客户机的公钥(server上肯定不会存放人家的私钥)。仅仅要验证对方的公钥和server上的一致就可以。

步骤例如以下:

  1. server发送字符串str(应该是未加密明文吧)给客户机。
  2. 客户机将str用自己的私钥加密后的结果发送给server。

  3. server用待验证的客户机公钥解密后发现一致。

    说明白实是对方。通过。

以上步骤的实现,须要用户事先将自己的公钥发送给server留作记录。网上有ssh-keygen 方式生成后传给server的,非常easy。

可是。我不明白的是know_host.pub 中的公钥不是已经存在了嘛,为什么还要必须生成另外一个公钥id_rsa.pub 呢。

。莫非免登陆的时候。协议中规定用的不是know_hosts.pub 中的公钥?

最后附上另外一篇阮老师的文章。非常清楚的讲了ssh登陆 过程,就是没有解答我的困惑。

SSH原理与运用(一):远程登录

ssh远程登录报错REMOTE HOST IDENTIFICATION HAS CHANGED!解决方式及原因的更多相关文章

  1. SSH不能连接并提示REMOTE HOST IDENTIFICATION HAS CHANGED解决

    SSH不能连接并提示REMOTE HOST IDENTIFICATION HAS CHANGED解决方法: 如果提示信息如下: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ...

  2. 虚拟机使用scp传输文件提示“WARNING REMOTE HOST IDENTIFICATION HAS CHANGED”解决方式

    虚拟机使用scp传输文件提示"WARNING REMOTE HOST IDENTIFICATION HAS CHANGED"解决方式 简单的说就是虚拟机里保存的认证密钥不正确了,需 ...

  3. linux之 ssh连接服务器,WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

    [root@zk01 ~]# ssh localhost@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ WARNING: RE ...

  4. SSH小问题:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HA ...

  5. WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED解决方法

    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@    WARNING: REMOTE HOST IDENTIFICATION ...

  6. 树莓派ssh报错:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED解决

    初次使用树莓派,在使用树莓派本机网卡时被DHCP服务器分配到192.168.0.103,连接正常.于是乎很开心的将无线网卡插入树莓派,急于摆脱网线的束缚. ifconfig一下获取无线网卡的MAC地址 ...

  7. CentOs7:ssh远程登录错误WARNING:REMOTE HOST IDENTIFICATION HAS CHANGED解决简单办法

    错误及解决办法如下图所示. 第一步:cd ~/.ssh 第二步:vi known_hosts 第三步:删除与访问ip相关条目 附参考链接: https://www.cnblogs.com/york-h ...

  8. SSH不能连接并提示REMOTE HOST IDENTIFICATION HAS CHANGED

    ssh连接报错: 解决: vi /root/.ssh/known_hosts 找到要连接的主机的ip,把它的那行所有信息删除(就是一行)

  9. Linux REMOTE HOST IDENTIFICATION HAS CHANGED错误解决方法

    http://linuxme.blog.51cto.com/1850814/375752       WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED解决 ...

随机推荐

  1. 2014ACM/ICPC亚洲区西安站 F题 color (组合数学,容斥原理)

    题目链接:传送门 题意: n个格子排成一行.我们有m种颜色.能够给这些格子涂色,保证相邻的格子的颜色不同 问,最后恰好使用了k种颜色的方案数. 分析: 看完题目描写叙述之后立刻想到了一个公式 :C(m ...

  2. JAVA邮件收发实现(待)

    http://blog.csdn.net/ycg01/article/details/1394465

  3. 辛星分析html中间name和id 差额

    朋友们可以新手也能很容易区分id和class,但不一定很容易区分id和name,以下说一下二者的差别和联系. 首先是联系,它们都能够用来标记一个元素,并且能够用JavaScript来操作,可是操作方法 ...

  4. java去全半角空格,trim(), replaceAll(" +",""),replaceAll("\\s*", ""), replaceAll(" | ", "")

    JAVA中去掉空格 . String.trim() trim()是去掉首尾空格 .str.replace(" ", ""); 去掉所有空格,包括首尾.中间 St ...

  5. (step7.2.1)hdu 1395(2^x mod n = 1——简单数论)

    题目大意:输入一个整数n,输出使2^x mod n = 1成立的最小值K 解题思路:简单数论 1)n可能不能为偶数.因为偶数可不可能模上偶数以后==1. 2)n肯定不可能为1 .因为任何数模上1 == ...

  6. Centos 6.4 Linux 相关问题总结

    1.中文输入法安装 su root yum install "@Chinese Support" exit 然后设置Input Methord即可. 最后一步:logout,注意是 ...

  7. hadoop版本号变迁

    近期在研究hadoop时,发现hadoop的版本号非常混乱.原来的版本号都说0.X.X開始,后来发现有1.X.X和2.X.X 这样就不太清楚了. 0.20.2版本号曾经(不含该版本号)的配置文件都在d ...

  8. Sql Server函数全解<四>日期和时间函数

    原文:Sql Server函数全解<四>日期和时间函数   日期和时间函数主要用来处理日期和时间值,本篇主要介绍各种日期和时间函数的功能和用法,一般的日期函数除了使用date类型的参数外, ...

  9. 阅读UML类图和时序图

    这里不会将UML的各种元素都提到.我仅仅想讲讲类图中各个类之间的关系. 能看懂类图中各个类之间的线条.箭头代表什么意思后,也就足够应对 日常的工作和交流: 同一时候,我们应该能将类图所表达的含义和终于 ...

  10. (hdu step 7.1.2)You can Solve a Geometry Problem too(乞讨n条线段,相交两者之间的段数)

    称号: You can Solve a Geometry Problem too Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/ ...