大型混合環境中的 SSH 金鑰管理 (Linux)

大型混合環境中的 SSH 金鑰管理 (Linux)

在我工作過的每家公司中,管理 ssh 金鑰總是一件令人頭痛的事情。我們有不同的方式來管理它們。但主要是一些 CM 系統,如 puppet/chef/ansible 或只是手動複製密鑰,甚至是一些醜陋的 bash 腳本:D

也聽說有些人使用 LDAP 或任何資料庫作為 ssh 金鑰儲存。但您仍然需要一些額外的自動化,例如一些 CM 工具來在伺服器上放置/刪除金鑰。

所以問題是,是否有一些我不知道的好的、現代的方法?有多少大型 IT 公司(如Google或 Facebook 等)正在處理金鑰?

答案1

(元:IMO 這個問題不是基於意見的。)

如果您使用的是相當現代的 Linux/Unix 版本以及相當新的 OpenSSH,則可以使用 OpenSSH 憑證。如果您想要 MFA 的「門票」感覺,您可以頒發臨時 OpenSSH 憑證。

OpenSSH 憑證的重點是,唯一需要在 sshd 端安裝的是指令引用的 SSH-CA 公鑰sshd_config 中的 TrustedUserCAKey

隨著指令授權委託人*您也可以接受另一個本機使用者帳戶的 OpenSSH 憑證中的一組主體名稱(基本上是使用者名稱)。

OpenSSH 證書不是 X.509 證書,它們在來源樹文件中指定了不同的格式協議.certkeys

您會發現幾個網頁如何使用ssh 密鑰產生器使用 SSH-CA 簽署公鑰(例如使用 SSH 證書)。

我已經為作為 Web 服務運行的客戶實現了這樣一個小型 SSH-CA,以基於多重身份驗證(LDAP 和 OTP)頒發臨時用戶證書。

您會在常見的地方找到幾個開源實作。我故意不在這裡給出一個列表,因為在審查了其中的幾個之後,我已經實現了我自己的,因此不想認可特定的實現。這並不意味著這些實作不起作用。他們只是沒有滿足我的特定客戶要求。

警告:

目前它僅適用於開放SSH或者libssh在客戶端。油灰還不支援這個。網路設備和其他特殊設備也沒有支援。

PS:我仍然建議使用基於 LDAP 的使用者管理,這將為您提供更多所需的功能。

相關內容