ssh私鑰登陸提示Server refused our key問的解決辦法
問題現象:
在開啟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