為什麼 selinux 會在沒有密碼的情況下阻止遠端 ssh 訪問?
我有一個 CentOS 7 伺服器。我已經在沒有密碼的情況下嘗試登錄的主機上設置了 /root/.ssh/authorized_keys 。(是的,允許遠端 root 訪問是一個壞主意,但這是一個內部伺服器。) ssh 失敗,並且在 selinux 審計日誌中有這個。
type=USER_LOGIN msg=audit(1494544798.597:481313): pid=18660 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:sshd_t:s0-s0:c0.c1023 msg='op=login acct="root" exe="/usr/sbin/sshd" hostname=? addr=xx.xx.xx.xx terminal=ssh res=failed'
以下是 .ssh 內容的權限和上下文:
# ls -aZ /root/.ssh drwx------. root root system_u:object_r:ssh_home_t:s0 . dr-xr-x---. root root system_u:object_r:admin_home_t:s0 .. -rw-------. root root system_u:object_r:ssh_home_t:s0 authorized_keys -rw-r--r--. root root unconfined_u:object_r:ssh_home_t:s0 known_hosts
我已經將權限和上下文與另一個允許 ssh 登錄而無需密碼的系統進行了比較,它們是相同的。
在審核消息中,沒有說明 selinux 關注什麼文件,只是“res=fail”。
在工作的系統中,日誌條目中包含以下內容:
subj=system_u:system_r:sshd_t:s0-s0:c0.c1023
所以,我很困惑。/root/.ssh 中沒有具有上下文 system_u:system_r:sshd_t 的文件。所以,我不明白為什麼要記錄該上下文。
有沒有辦法知道所有 .ssh 相關文件的上下文應該是什麼?是的,我玩過 restorecon 沒有運氣。
您很快就開始使用 SELinux ….您確定您已正確設置 /etc/ssh/sshd_config 以允許通過 ssh 進行 root 訪問嗎?如果您對配置文件進行了任何更改,您是否重新啟動了 sshd 服務。
您是否嘗試過將 SELinux 設置為允許並對此進行測試。
你知道,如果 SELinux 拒絕訪問,我希望在 /var/log/audit/audit.log 中看到某種類型的 AVC(訪問向量記憶體)錯誤。請記住,audit.log 不僅僅用於 SELinux 問題。因此,您得到的只是登錄失敗報告,而不是 SELinux 錯誤。
您是否絕對確定您擁有的公共/私有 openssh 密鑰對實際上在 ssh 上下文中工作。您可以嘗試使用帶有 -v 選項的 ssh 命令進行日誌記錄,以調試並查看。
我還將檢查 /var/log/messages 和 /var/log/secure 文件以獲取更多資訊。