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

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。