selinux引起CentOS无法使用public key登陆的问题

在新安装的centos上建立 /root/.ssh目录,chmod为700, 这个目录中建立 authorized_keys文件,复制公钥进去,设置权限为600,从其他机器使用public key进行ssh登陆,这件事已经做过无数次了。

这次就总是无法登陆成功,退化为使用password,可以登陆成功。
对比了 /etc/ssh/sshd_config文件,和其他服务器没有任何区别。

原来是selinux引起的。 在其他可以正常登陆的服务器上, /etc/selinux/config中, selinux=disabled。而在这次出问题的centos上,则是selinux=enforcing。关于这一点可以使用getenforce命令查看。

selinux本身不一定会引起问题。 问题是新建立的.ssh目录的security context不正确。

解决办法1: 修正security context。
先看看无法ssh登陆时的样子:

[root@test ~]# ls -alZd .ssh/
drwx------. root root unconfined_u:object_r:admin_home_t:s0 .ssh/

修正:

[root@test ~]# restorecon -r -vv /root/.ssh
restorecon reset /root/.ssh context unconfined_u:object_r:admin_home_t:s0->unconfined_u:object_r:ssh_home_t:s0
restorecon reset /root/.ssh/authorized_keys context unconfined_u:object_r:admin_home_t:s0->unconfined_u:object_r:ssh_home_t:s0

可以看到发生了变化:

[root@test ~]# ls -alZd .ssh/
drwx------. root root unconfined_u:object_r:ssh_home_t:s0 .ssh/

这样再ssh,成功。

方法2: 关闭selinux。修改 /etc/selinux/config,设置为disabled。

《selinux引起CentOS无法使用public key登陆的问题》有1个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注