Centos

CentOS - Pubkey Auth 不適用於 /var 中的使用者

  • August 14, 2016

在過去一周左右的時間裡,我一直在解決一個問題,但我的想法已經不多了。

我在我的 Centos 7 VPS 上為 git 伺服器添加了一個新使用者,並且(根據幾篇文章的建議)將使用者的主目錄放在裡面/var而不是/home.

然後,我嘗試使用 ssh 登錄該使用者,它工作正常。但是,公鑰身份驗證無法正常工作。在調試過程中,我最終使git使用者和主使用者在各方面都相同——他們都是 sudoers,他們有相同的.ssh目錄,相同的authorized_keys文件,我什至將git使用者移動到/home,但無濟於事。

為了進一步測試,我創建了兩個新使用者:test1test2. 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 為每個文件設置標籤,預設情況下基於它們的路徑。

當您移動一些特殊用途的目錄時,請確保它們具有適當的標籤。在這種情況下,有chconwith--reference選項,在這種情況下效果很好:

chcon --reference /home/user/.ssh/ -R /var/user/.ssh/

更好的方法是編寫自定義策略並將其載入到核心中,但這超出了此答案的範圍。

引用自:https://serverfault.com/questions/796420