在使用金鑰驗證的 ssh 連線中,使用者會傳送他想要使用的公鑰的 ID。然後,伺服器檢查authorized_keys 檔案中的公鑰。
我希望伺服器不要在authorized_keys檔案中尋找該ID,而是使用使用者名稱從另一個來源(例如資料庫、另一個檔案、遠端伺服器等)檢索金鑰
可以這樣做嗎?
答案1
要改變文件路徑,您可以指定授權密鑰文件sshd_config 中的選項(假設伺服器執行 OpenSSH)。您可以提供多個路徑,可以是相對於使用者主目錄的路徑,也可以是%u
擴展到使用者名稱的絕對路徑。
例如,保留預設的authorized_keys位置和添加/etc 中的一個檔案:
AuthorizedKeysFile .ssh/authorized_keys /etc/ssh/users/%u.txt
要使用外部命令,如果伺服器使用的是OpenSSH 6.2或更高版本,則可以指定授權密鑰命令在伺服器的 sshd_config 檔案中,指向自訂程式或腳本。
程式將在每次登入時運行,接收使用者名稱作為命令列參數,並需要透過 stdout 輸出該使用者的金鑰清單(使用與authorized_keys相同的格式)。
例如,如果您使用 LDAP,則固態硬碟sss_ssh_authorizedkeys
LDAP 用戶端已經包含一個用於從使用者的 sshPublicKey 屬性檢索金鑰的工具。
AuthorizedKeysCommand /usr/bin/sss_ssh_authorizedkeys
AuthorizedKeysCommandUser nobody