用root登录,先敲个 `ssh-keygen`,一路回车就行,别改啥默认设置。然后把生成的公钥(id_rsa.pub)搞到目标机器上,命令是:`ssh-copy-id root@192.168.1.x`。接着试试能不能免密登录:`ssh 192.168.1.x`,第一次可能还要输密码,正常。
要是连不上,先排查这几个点:
1. 看看目标机的 `~/.ssh/authorized_keys` 权限对不对,改成700:
`chmod 700 ~/.ssh/authorized_keys`
2. 检查 `/etc/ssh/sshd_config` 这个配置文件:
把
`StrictModes yes`
改成
`StrictModes no`
再把
`AuthorizedKeysFile .ssh/authorized_keys`
改成
`AuthorizedKeysFile .ssh/authorized_keys`(去掉前面的)
3. 本地删一下 `~/.ssh/known_hosts` 文件,避免有旧记录冲突。
4. 最后重启下ssh服务:
`service sshd restart`
如果还是登不进去,就看看防火墙和selinux开没开:
查selinux状态:`/usr/sbin/sestatus -v`
查防火墙:`systemctl status firewalld`
要是都开着,建议先关掉试试(特别是测试环境):
`systemctl stop firewalld`
selinux临时关闭:`setenforce 0`
想让目标机器也能免密回连回来?一样的操作,反过来再走一遍流程就行。
记得每步操作完都检查下有没有报错,图片那些就不看了,反正你也贴不了……照着步骤来基本都能搞定。