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文件,里面或许有错误的相关信息

 

参考

CentOS SSH无密码登录原理,配置以及常见问题

posted @ 2017-04-26 08:59  简单的竹子  阅读(470)  评论(0编辑  收藏  举报