2017-01-28 33 views
0

我有一個PHP應用程序,其中包含用戶名和公共S​​SH密鑰。我想將這些帳戶用作openssh的用戶後端。使用pam_exec帳戶的openssh帳戶的外部腳本

我想我需要使用pam_exec和PHP/Bash腳本。我寫了一個可以在CLI中執行的php腳本(shebang設置了php可執行文件的env)。如果我需要將它包裝在bash腳本中而不是訪問環境變量,我可以這樣做。該腳本目前採用用戶名作爲第一個和唯一的參數,像這樣:

/opt/scripts/my-auth-script.php user_to_look_for 

如果沒有該腳本將退出成功零(用戶存在),或者1號出口。它目前回音OK或失敗,但我可以輕鬆地將其關閉。

所以,我的問題是,在查看用戶帳戶的實際主機系統之前,如何讓pam_exec調用我的腳本來查找用戶帳戶?

回答

0

我有它的工作。這樣做的方法是在sshd_config中設置openssh的AuthorizedKeysCommand和AuthorisedKeyUser設置。有一點需要注意,github和其他人通過在客戶之間共享的單一登錄用戶提供ssh作爲服務的原因是,被調用的用戶必須可以通過登錄的系統來解析,因此他們muxt存在本地,或者用戶db必須連接到像LDAP這樣的遠程資源,這也必須集成到應用程序中。

解決這個問題的方法是,AuthorizedKeyCommand可以帶參數,%u用於用戶名,在這種情況下,%k用於鍵或%f用於sha256指紋的密鑰。然後,該腳本可以忽略所給出的通用用戶名,然後檢查數據庫中的密鑰或指紋。如果我們找到它,我們有用戶爲該密鑰和成功的身份驗證。如果不是,我們不會。