ssh免密码登陆
一、查看系统安全日志,定位问题
执行 sudo cat /var/log/secure
查看系统的安全日志,然后再安全日志中看到SSH登录过程中提示了如下错误:
serverA 免密码登录到 serverB
机器A 向 机器B 进行免密码登陆
step1:
在机器A中
命令:ssh-keygen -t rsa,一路回车就行,如果需要passphrase密码,自行输入就行,一路回车passphrase密码为空
此时在 ~/.ssh/ 目录下生成了公钥(id_rsa.pub)和私钥(id_rsa)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
step2:
把机器A的公钥(id_rsa.pub)复制到机器B ~/.ssh/authorized_keys 文件里,两种常用方法
方法1:
scp ~/.ssh/id_rsa.pub username@host:/home/B/id_rsa.pub //此时scp需要输入 登录机器B username用户的密码 //然后进入机器B内把 /home/B/id_rsa.pub 文件内容加写进 ~/.ssh/authorized_keys 文件: cat /home/B/id_rsa.pub /home/B/.ssh/authorized_keys
方法2:
//在机器A中使用 ssh-copy-id 把公钥加写到机器B的 ~/.ssh/authorized_keys 文件 ssh-copy-id username@host //执行后输入机器B username用户的密码,效果和方法1一样
step3:
修改机器B ~/.ssh/authorized_keys 文件的权限:
chmod 600 ~/.ssh/authorized_keys
此时如果机器B没有~/.ssh 目录需要手动创建
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
step4:
此时机器A可以进行免验证登录 机器B
ssh username@host
参阅网上很多方法后,发现步骤都差不多,但是却屡屡失败,设置完后仍然要输入密码,后面发现了是被登录机器的文件权限问题:
//用户权限 chmod 700 /home/username //.ssh文件夹权限 chmod 700 ~/.ssh/ // ~/.ssh/authorized_keys 文件权限 chmod 600 ~/.ssh/authorized_keys
还有可能这个文件内容被注释了(改成下图的状态):
vi /etc/ssh/sshd_config
1 如果还是无法登陆,可能是Linux禁用了root账户ssh登陆,解决方法:
编辑配置文件
vim /etc/ssh/sshd_config
2 修改 PermitRootLogin
后面的
no 为 yes,并且去掉前面的注释符,同时可以限制失败次数
注意: 这个失败次数是对所有用户都起作用的。
#LoginGraceTime 2m PermitRootLogin yes #StrictModes yes MaxAuthTries 3 #MaxSessions 10
3 重启 sshd 服务:
systemctl restart sshd.service