CentOS SSH无密码登录的配置
配置SSH无登陆验证,在很多场景下是非常方便的,尤其是在管理大型集群服务时,避免了繁琐的密码验证,在安全级别越高的服务器上,通常密码的设置更复杂,配置SSH,不仅可以用密钥保证节点间通信的安全性,同时也降低了频繁输入密码登陆的耗时,大大提高了管理效率。
原理简介
为了便于理解,假设需要在hadoop148这台机器上可以通过无密码登录的方式连接到hadoop107上。
首先在hadoop148上生成一个密钥对,包括一个公钥和一个私钥,并将公钥复制到hadoop107上。
然后当hadoop148通过SSH连接hadoop107机器时,hadoop107机器就会生成一个随机数并用hadoop148的公钥对随机数进行加密,并发送给hadoop148。
最后hadoop148收到加密数之后再用私钥解密,并将解密数回传给hadoop107,hadoop107确认解密数无误之后就允许hadoop148不输入密码进行连接了
配置
具体步骤
1、登录hadoop148,执行命令ssh-keygen-trsa之后一路回车,查看刚生成的无密码钥对:cd.ssh后执行ll
2、把id_rsa.pub追加到授权的key里面去。执行命令cat~/.ssh/id_rsa.pub>>~/.ssh/authorized_keys
3、修改权限:执行chmod600~/.ssh/authorized_keys
常见问题
问题现象:
hadoop148机器已经生产rsa密钥
且已经将publickey添加到serverB机器/root/.ssh/authorized_keys
但是sshroot@hadoop107机器时仍然需要输入密码,即无密码认证失败,
分析与处理:
第一步:查看权限
用ssh-vdebug访问,日志如下,但是从日志看不到失败原因,只知道在用publickey认证时,对端没有reply;
再查看/var/log/secure日志
发现所有用户的HOME目录应该是700权限,否则会引起很多问题,这个问题同样是由于这个原因
最终,执行chmod700root后解决
关于权限问题总结如下:
1).ssh目录的权限必须是700
2)用户目录的权限必须是700,比如我是用root用户操作的,则/root的权限必须是700
3).ssh/authorized_keys文件权限必须是600
第二步:查看安全上下文
如果通过改变权限还不能解决问题,可以尝试如下方法:
首先用ls-laZ检查了一下.ssh目录,果然不是ssh_home_t,则需要使用restorecon命令对.ssh目录的context进行恢复。命令是:restorecon-r-vv/root/.ssh
第三步:分析/var/log/audit/audit.log日志
修改目录用户权限
chown-Rroot.root/root
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!