我們正在使用 OpenSSH_5.3p1 運行 CentOS 6.9,並為具有相同主目錄(安裝到 htdocs)的外部使用者建立 chroot 帳戶。問題是該文件.ssh/authorized_keys2
由第一個用戶擁有(並且這已經有效)。我怎樣才能讓它為其他用戶工作?
我嘗試AuthorizedKeysFile
在 sshd_config 中新增多個檔案路徑,但出現錯誤garbage at end of line
。
我嘗試在第二個用戶的匹配區塊中新增AuthorizedKeysFile
in sshd_config
,但出現錯誤'AuthorizedKeysFile' is not allowed within a Match block
。
我無法更改主目錄,因為否則路徑與實際的開發路徑不同。
有什麼建議如何解決嗎?我是否必須將 OpenSSH 升級到支援多個條目的新版本AuthorizedKeysFile
(我想我必須使用 rpm 建置它)?之後的安全性更新怎麼樣?
答案1
一種選擇是使用令牌為每個使用者提供唯一的authorized_keys
檔案。
AuthorizedKeysFile
指定包含可用於使用者驗證的公鑰的檔案。該格式在 的 AUTHORIZED_KEYS FILE FORMAT 部分中進行了描述
sshd(8)
。AuthorizedKeysFile
%T
可能包含在連接設定期間被替換的 形式的令牌。定義了以下標記:%%
被替換為文字%
,%h
被替換為正在驗證的使用者的主目錄,以及%u
替換為該用戶的用戶名。擴展後,AuthorizedKeysFile
被視為絕對路徑或相對於使用者主目錄的路徑。可以列出多個文件,並用空格分隔。或者,可以將此選項設定為none
跳過檢查文件中的使用者金鑰。預設為.ssh/authorized_keys .ssh/authorized_keys2
.
強調我的。
所以你可以設定:
AuthorizedKeysFile .ssh/%u_authorized_keys
然後為用戶foo
建立一個authorized_keys
文件.ssh/foo_authorized_keys
。
關於權限的註釋
從人 sshd:
~/.ssh/authorized_keys
……
如果其他使用者可以寫入該檔案、~/.ssh
目錄或使用者的主目錄,則該檔案可能會被未經授權的使用者修改或取代。在這種情況下,sshd 將不允許使用它,除非該StrictModes
選項已設定為no
。
因此,您可能需要將鑰匙放在外面.ssh/
,或設定StrictModes
為no
。如果您設定StrictModes
為no
確保其他使用者無法authorized_keys
為其他人建立金鑰,或刪除其他使用者的授權金鑰。可能最好做類似的事情:
AuthorizedKeysFile .ssh_%u/authorized_keys
.ssh_foo/
為使用者建立一個foo
只能foo
讀/寫的目錄。
您可以選擇是否也允許.ssh/authorized_keys
使用
AuthorizedKeysFile .ssh/authorized_keys .ssh_%u/authorized_keys
這將允許“正常”形式authorized_keys
仍然有效,並且authorized_keys
文件必須由您的用戶擁有並具有正確的權限,否則它將被忽略。仍然考慮到不應該authorized_keys
為另一個用戶創建文件,這可能意味著以 root 身份觸摸該文件,因此它是空的。