redhat 6.3 ssh免密码登录
原理介绍
为了便于理解,假设需要在server108这台机器上可以通过无密码登录的方式连接到server107上。
首先在 server108上生成一个密 钥对,包括一个公钥和一个私钥,并将公钥复制到server107上。
然后当 server108通 过 SSH 连接server107机器时, server107机器 就会生成一个随机数并用 server108的公 钥对随机数进行加密,并发送给 hadoop148。
最后 server108收到加密数之后再用私 钥解密,并将解密数回传给server107, server107确认解密数无误之后就允许 server108不 输入密码进行连接了
配置实例:
两台主机
10.5.7.107 server1
10.5.7.108 server2
两台主机检查 ~/.ssh 文件夹没有则新建
登录107机器
ssh-keygen -t rsa 一路狂按回车,最终生成(id_rsa,id_rsa.pub两个文件).
把id_rsa.pub 复制到108两台node上去.
scp ~/.ssh/id_rsa.pub root@10.5.7.107:~/.ssh
切换到108:
生成authorized_keys.
cat id_rsa.pub >> authorized_keys
然后把authorized_keys scp到107.
scp ~/.ssh/authorized_keys root@10.5.7.107:~/.ssh
然后把两台机器 .ssh/ 文件夹权限改为700,authorized_keys文件权限改为600(or 644).
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
确定两台主机ssh配置文件:
vi /etc/ssh/sshd_config
#禁用root账户登录,如果是用root用户登录请开启
PermitRootLogin yes
# 是否让 sshd 去检查用户家目录或相关档案的权限数据,
# 这是为了担心使用者将某些重要档案的权限设错,可能会导致一些问题所致。
# 例如使用者的 ~.ssh/ 权限设错时,某些特殊情况下会不许用户登入
StrictModes no
# 是否允许用户自行使用成对的密钥系统进行登入行为,仅针对 version 2。
# 至于自制的公钥数据就放置于用户家目录下的 .ssh/authorized_keys 内
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
# 有了证书登录了,就禁用密码登录吧,安全要紧
PasswordAuthentication no
文件有修改需要重启ssh服务
service ssh restart
reboot
分析与处理
1)查看日志
用ssh -v debug访问,日志如下,但是从日志看不到失败原因,只知道在用publickey认证时,对端没有reply;
再查看/var/log/secure日志
通过查看hadoop107机器/var/log/secure
2)查看安全上下文
用ls -laZ检查了一下.ssh目录,果然不是ssh_home_t,则需要使用restorecon命令对.ssh目录的context进行恢复。命令是:restorecon -r -vv /root/.ssh
3)分析/var/log/audit/audit.log日志
如果还是不行,查看hadoop107的audit.log文件,里面或许有错误的相关信息
参考