有些时候,我们不能使用 root 用户在正式环境服务器操作,此时可以使用普通用户,root 用户的 key 认证登陆设置非常简单,普通用户的 key 认证登陆尝试好几次总算找到了原因,最终还是文件和文件夹权限的问题,下面简单说一下具体的 key 认证配置方法:(假设这里有两台服务器 A、B,A 服务器的 jack 用户要实现 key 认证登陆 B 服务器)
在两台服务器上建立 jack 用户,在 A 服务器的 jack 用户下生成 jack 的公私钥,然后将 jack 的公钥放入 B 服务器下 jack 家目录的.ssh/authorized_keys里。
下面就是权限配置:被登录主机权限如下:
1 | 1. chmod 755 /home/jack/ |
原主机最好也做同样配置,这样就大功告成了。
在平时工作中,有时候需要 SSH 登陆到别的 Linux 主机上去,但有时候 SSH 登陆会被禁止,并弹出如下类似提示:
1 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ |
比较奇怪,于是研究了一下。
ssh 会把你每个你访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts。当下次访问相同计算机时,OpenSSH 会核对公钥。如果公钥不同,OpenSSH 会发出警告, 避免你受到 DNS Hijack 之类的攻击。上面列出的情况,就是这种情况。
原因:一台主机上有多个 Linux 系统,会经常切换,那么这些系统使用同一 ip,登录过一次后就会把 ssh 信息记录在本地的~/.ssh/known_hsots文件中,切换该系统后再用 ssh 访问这台主机就会出现冲突警告,需要手动删除修改 known_hsots 里面的内容。
有以下两个解决方案:
手动删除修改 known_hsots 里面的内容;
修改配置文件
~/.ssh/config,加上这两行,重启服务器。
1 | StrictHostKeyChecking no |