確定透過 SSH 登入的使用者的遠端電腦帳戶名稱

確定透過 SSH 登入的使用者的遠端電腦帳戶名稱

在我工作的公司,我們有一些共享帳戶,任何人都可以透過 SSH 使用這些帳戶來執行特定任務。此時,我們有太多用戶,每個用戶都有自己的可用性特權,例如 shell 別名等。

我想做的是允許使用者根據實際登入的~/.bash_profile人擁有不同的 shell 設定。~/.Jonathan_profile~/.Bob

但是,我不確定是否有辦法告訴使用 SSH 登入的使用者在遠端電腦上的帳戶名稱。

非常感謝任何提示。

答案1

你無法知道客戶正在使用什麼帳戶,因為客戶不會告訴你。但有這些事你做:

  1. 建立單獨的帳戶並授予使用者使用 sudo 存取共享帳戶的權限。這確實是首選選項,可以為您提供最佳審核(始終記錄誰做了什麼),並且用戶可以將他們想要的任何實用程式放入其帳戶中。然而,這也是大多數工作。

  2. 僅使用公鑰身份驗證並使用以下語法從那裡設定環境變數:

    environment="END_USER=whoever" ssh-rsa asdfasdfr...
    

    .ssh/authorized_keys。比你$END_USER在 中看到的還要多.profile。顯然,您必須為用於登入的每個公鑰設定它。

  3. 告訴大家使用選項從客戶端設定環境變數SendEnv(伺服器必須有對應的AcceptEnv設定)。再次檢查 中的變數.profile

  4. 從變數中獲取來源IP和端口SSH_CONNECTION,用於ident獲取實際的來源用戶;但identd必須在客戶端上運行,現在很少這樣了,因為它不是很有用,但對於潛在的攻擊者獲取有關您的系統的一些資訊很有用。

  5. 對於單一帳戶內更複雜的自訂,始終可以編寫自訂 shell 包裝器並將其與command授權金鑰中的屬性一起使用。這也是一項相當多的工作,但它可以用來實現幾乎任何限制和審計,而無需建立單獨的帳戶。

注意:我當然建議僅使用公鑰並停用密碼。這樣,如果您想取消某人的存取權限,只需刪除他們的金鑰即可。

相關內容