今天重新组了机架,发现一些设备和软件连不上SSH服务了,并给出了冲突报错。找了半天才找到原因:
原因:ssh会把你每个你访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts。当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。我在上面列出的情况,就是这种情况。
一台主机上有多个Linux系统,会经常切换,那么这些系统使用同一ip,登录过一次后就会把ssh信息记录在本地的~/.ssh/known_hsots文件中,切换该系统后再用ssh访问这台主机就会出现冲突警告,需要手动删除修改known_hsots里面的内容。
根据系统不同,需要清空以下文件中的内容:
(windows) C:/<你的用户>../.ssh/config/known_hosts
(Linux) ~/.ssh/config/known_hosts
之后涉及到ssh的软件,如git、XShell等都会要求重新拉取公钥。