CentOS - Pubkey Auth 不適用於 /var 中的使用者
在過去一周左右的時間裡,我一直在解決一個問題,但我的想法已經不多了。
我在我的 Centos 7 VPS 上為 git 伺服器添加了一個新使用者,並且(根據幾篇文章的建議)將使用者的主目錄放在裡面
/var
而不是/home
.然後,我嘗試使用 ssh 登錄該使用者,它工作正常。但是,公鑰身份驗證無法正常工作。在調試過程中,我最終使
git
使用者和主使用者在各方面都相同——他們都是 sudoers,他們有相同的.ssh
目錄,相同的authorized_keys
文件,我什至將git
使用者移動到/home
,但無濟於事。為了進一步測試,我創建了兩個新使用者:
test1
和test2
.test1
的主目錄位於 中/home
,而test2
的主目錄位於/var
. 果然,pubkey auth 為test1
而不是test2
. 我認為這不是權限問題,因為/var
具有相同的權限/home
,並且使用者目錄都具有正確的權限。此外,我很困惑原始git
使用者即使將其移至/home
.如果我在詳細模式下執行 ssh,我可以看到在發送密鑰後發生了阻塞:
debug1: Offering RSA public key: /home/user/.ssh/foo.key debug2: we sent a publickey packet, wait for reply debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
當連接到主使用者或 時
test1
,它的行為不同:debug1: Offering RSA public key: /home/user/.ssh/foo.key debug2: we sent a publickey packet, wait for reply debug1: Server accepts key: pkalg ssh-rsa blen 279
我發現的唯一線索:嘗試以不存在的使用者身份登錄時,我得到了與第一個相同的響應(等待回复,然後跳過 pubkey auth)。那麼,機器是否讓
git
使用者對外界不可見?為什麼會這樣做?我通常可以完成這些事情,但我認為這次我很難過。謝謝你的幫助!
這是 SELinux 的問題。如果您沒有這種級別的安全性,在文件系統中移動東西可以正常工作,但是 SELinux 為每個文件設置標籤,預設情況下基於它們的路徑。
當您移動一些特殊用途的目錄時,請確保它們具有適當的標籤。在這種情況下,有
chcon
with--reference
選項,在這種情況下效果很好:chcon --reference /home/user/.ssh/ -R /var/user/.ssh/
更好的方法是編寫自定義策略並將其載入到核心中,但這超出了此答案的範圍。