我想啟用以下功能:AWS 中的 Linux ec2 實例,對目前沒有主目錄的使用者執行 LDAP 驗證。我在 AWS 中有一個可用的 openLDAP 來完成該任務
LDAP 經過驗證後:
- 將建立使用者的主目錄
- 使用者的公共 ssh 金鑰是從
sshPublicKey
LDAP 中的屬性中檢索的,並且只有在本地 sshPrivateKey 匹配時才能登入
我知道如何進行 LDAP 身份驗證或者透過檢索公鑰,ldapsearch
但我想兩者都做。
我試圖緩解的情況是當員工離開公司時:我可以在 openLDAP 中停用他們的帳戶,即使他們的公鑰存在於電腦上,他們也將無法使用它們,因為他們也會失敗 ldap 驗證。
我在 StackExchanges 上搜尋過,但認為沒有找到我要找的東西。我最接近的是
https://serverfault.com/questions/653792/ssh-key-authentication-using-ldap
https://serverfault.com/questions/579341/combination-of-ssh-key-auth-and-two-factor-authentication
答案1
首先,授權金鑰不應儲存在使用者的主目錄中,原因有二:
- 不應允許使用者自行新增隨機授權金鑰。
- 首次登入時,如果主目錄尚不存在,則授權金鑰應該已存在。
你應該設置授權密鑰文件像這樣讓sshd從鎖定的目錄中讀取授權金鑰,您可以透過幫助程式同步腳本放置金鑰:
AuthorizedKeysFile /etc/ssh/authorized_keys/%u
它的一個變體是使用授權密鑰命令觸發授權金鑰的某些動態檢索。請記住,當您必須登入時,網路可能會關閉或系統無法存取。
如果員工離開,您也可以刪除授權金鑰。
如果您仍然想強制使用基於金鑰和密碼的身份驗證,您可以設定認證方法像這樣:
AuthenticationMethods publickey,password
請注意用作分隔符號的逗號而不是空格。
(如果您不想自己處理所有細節,您可以設定現成的解決方案,例如自由IPA和固態硬碟作為 NSS/PAM 客戶端或我的Æ-DIR和埃霍斯特用作 NSS/PAM 客戶端。