ssh登录之忽略known_hosts文件


        今天在开发导游项目的时候遇到一个问题,在临下班的时候,我准备把所有代码都push一下,准备回家,结果发现用 tortoisegit 死活不让 push , pull 也报错, tortoisegit 报的错也看不出到底是哪里出了错,呵呵哒。

        无奈之下,换了 git 命令行,然后就给我来了类似这么一段(网上找的,因为当时我并没有保存)提示:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 
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 the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is36:68:a6:e6:43:34:6b:82:d7:f4:df:1f:c2:e7:37:cc.
Please contact your system administrator.
Add correct host key in /u/xlian008/.ssh/known_hosts to get rid of this message.
Offending key in /u/xlian008/.ssh/known_hosts:2RSA host key for 135.1.35.130 has changed and you have requested strict checking.Host key verification failed.

  最后我的代码也没能提交成功,很是郁闷。

  然后回到家,百度之,找到了问题之所在:

  ssh会把你每个你访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts。当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。

  原因:一台主机上有多个Linux系统,会经常切换,那么这些系统使用同一ip,登录过一次后就会把ssh信息记录在本地的~/.ssh/known_hsots文件中,切换该系统后再用ssh访问这台主机就会出现冲突警告,需要手动删除修改known_hsots里面的内容。

  可是我也没切换系统啊,好吧,不管了,网页上给出了两个解决方法:

  1.手动删除修改known_hsots里面的内容;
  2.修改配置文件“~/.ssh/config”,加上这两行,重启服务器。

StrictHostKeyChecking no
UserKnownHostsFile /dev/null

  试了一下,第一个方法不太好使,于是只能转向第二个方法,加上之后,好了。

  优缺点:

  1.需要每次手动删除文件内容,一些自动化脚本的无法运行(在 ssh 登陆时失败),但是安全性高;
  2.ssh 登陆时会忽略 known_hsots 的访问,但是安全性低;
  以上的方法可能不太安全,但是只能先这样了,要不然我代码都push不了了。

 

文章来源:http://www.tuicool.com/articles/Z7B3MjB


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM