Linux上ssh免密码登录
由于工作需要,需要频繁发布系统,于是就决定在发布机上搞一套自动上传文件,远程运行脚本的自动化发布,但是每次ssh都需要输入密码,于是就需要本文提到的SSH免密码登录。
现有A服务器和B服务器,A服务器需要SSH免密码连到B服务器。
先在B服务器上以下命令,会在用户目录下创建.ssh目录并在其下创建公钥和私钥(id_rsa,id_rsa.pub):
ssh-keygen -t rsa -P ‘‘
然后为了测试方便,先将自己的公钥导入到受信的公钥列表中
cd ~/.ssh cat id_rsa.pub >> authorized_keys
这样就完成了,现在开始测试并排错
连接自己验证是否成功
ssh localhost
第一次连接会有个提示,是否加入受信任主机文件,输入yes即可。
如果没有提示输入密码就表示成功了,如果任就需要输入密码就表示哪里有问题。
总结下3个地方可能导致ssh免密码登录失败。
.ssh权限:这个是最常见的问题,虽然在RHEL6上创建文件默认是644的权限,不用更改,单不排除其他linux发行版本的不同,.ssh文件夹需要700的权限,authorized_keys需要644或600(600是为了不让其他用户查看,更为安全一些。)
chmod 700 .ssh chmod 644 authorized_keys
用户目录权限:被免密码登录用户的夹目录权限必须是755
ll ~/..
最后一个,也是最难发现的问题,就是只有root用户可以免密码登录,其他用户都不行,即使上述权限配置都正确,那就是没有关闭selinux
vim /etc/selinux/config 把 SELINUX=enforcing 改成 SELINUX=disabled
这是永久改变,但是需要重启才能生效的,如果要马上生效,那就需要运行临时生效命令
setenforce 0
经过这3步的排错,应该能解决绝大多数ssh的问题了,另外如果遇到问题,最好的方法是看下系统安全的日志
tail -f /var/log/secure
或者使用ssh debug模式连接看看问题出在哪里
ssh -v debug localhost(或其他主机)
本机如果正常了,那就在A上重复的第一步,把A的id_rsa.pub添加入B的authorized_keys即可。
本文出自 “闪电之痕” 博客,请务必保留此出处http://glennxie.blog.51cto.com/1267825/1660720
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。