
在我工作的公司,我們有一些共享帳戶,任何人都可以透過 SSH 使用這些帳戶來執行特定任務。此時,我們有太多用戶,每個用戶都有自己的可用性特權,例如 shell 別名等。
我想做的是允許使用者根據實際登入的~/.bash_profile
人擁有不同的 shell 設定。~/.Jonathan_profile
~/.Bob
但是,我不確定是否有辦法告訴使用 SSH 登入的使用者在遠端電腦上的帳戶名稱。
非常感謝任何提示。
答案1
你無法知道客戶正在使用什麼帳戶,因為客戶不會告訴你。但有這些事你能做:
建立單獨的帳戶並授予使用者使用 sudo 存取共享帳戶的權限。這確實是首選選項,可以為您提供最佳審核(始終記錄誰做了什麼),並且用戶可以將他們想要的任何實用程式放入其帳戶中。然而,這也是大多數工作。
僅使用公鑰身份驗證並使用以下語法從那裡設定環境變數:
environment="END_USER=whoever" ssh-rsa asdfasdfr...
在
.ssh/authorized_keys
。比你$END_USER
在 中看到的還要多.profile
。顯然,您必須為用於登入的每個公鑰設定它。告訴大家使用選項從客戶端設定環境變數
SendEnv
(伺服器必須有對應的AcceptEnv
設定)。再次檢查 中的變數.profile
。從變數中獲取來源IP和端口
SSH_CONNECTION
,用於ident
獲取實際的來源用戶;但identd
必須在客戶端上運行,現在很少這樣了,因為它不是很有用,但對於潛在的攻擊者獲取有關您的系統的一些資訊很有用。對於單一帳戶內更複雜的自訂,始終可以編寫自訂 shell 包裝器並將其與
command
授權金鑰中的屬性一起使用。這也是一項相當多的工作,但它可以用來實現幾乎任何限制和審計,而無需建立單獨的帳戶。
注意:我當然建議僅使用公鑰並停用密碼。這樣,如果您想取消某人的存取權限,只需刪除他們的金鑰即可。