02 February 2015

ssh非root用户key认证登陆及忽略known_hosts

有些时候,我们不能使用root用户在正式环境服务器操作,此时可以使用普通用户,root用户的key认证登陆设置非常简单,普通用户的key认证登陆尝试好几次总算找到了原因,最终还是文件和文件夹权限的问题,下面简单说一下具体的key认证配置方法:(假设这里有两台服务器A、B,A服务器的jack用户要实现key认证登陆B服务器)

在两台服务器上建立jack用户,在A服务器的jack用户下生成jack的公私钥,然后将jack的公钥放入B服务器下jack家目录的.ssh/authorized_keys里。

下面就是权限配置:被登录主机权限如下:

  1. chmod 755 /home/jack/

  2. chmod 700 /home/jack/.ssh/

  3. chmod 600 /home/jack/.ssh/*

原主机最好也做同样配置,这样就大功告成了。

在平时工作中,有时候需要SSH登陆到别的Linux主机上去,但有时候SSH登陆会被禁止,并弹出如下类似提示:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 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

Tags:
0 comments