问题现象:
在开启Selinux的情况下,使用无密码认证的私钥登陆登陆时,会出现如下错误提示:
Server refused our key
在/var/log/audit/audit.log日志文件下,可以看到如下提示:
type=AVC msg=audit(1371453190.650:21382): avc: denied { read } for pid=2048 comm=”sshd” name=”authorized_keys” dev=dm-2 ino=393229 scontext=unconfined_u:system_r:sshd_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:home_root_t:s0 tclass=file
问题原因:
生成的~/.ssh/authorized_keys 文件没有selinux上下文属性,导致无法通过Selinux认证,查看该文件属性如下:
[barlowliu@web1 ~]$ ll -Z .ssh/authorized_keys
-rwxr–r–. barlowliu barlowliu ? .ssh/authorized_keys
很多网友在遇到此问题时,都是采用的关闭selinux方式解决问题,但鉴于selinux带来的安全性加强,在一般情况下,不建议关闭selinux。
办法解决:
# restorecon -R -v /home
该命令的作用了恢复/home 目录下所有文件的默认selinux安全上下文属性。
再次查看~/.ssh/authorized_keys文件的selinux安全上下文属性,发现已经改变:
[barlowliu@web1 ~]$ ll -Z ~/.ssh/authorized_keys
-rwxr–r–. barlowliu barlowliu unconfined_u:object_r:user_home_t:s0 /home/barlowliu/.ssh/authorized_keys