2012-03-18 68 views
0

我想爲我和其他幾個人建立一個SSH網關。 被授權使用此網關服務器,應該意味着可以訪問任何目標服務器。避免SSH密鑰被移動

通過在所有目標服務器中安裝公鑰並將非密碼SSH密鑰放置在網關服務器上的所有用戶主目錄中,可以輕鬆完成此操作。

但是,我不希望任何人都能夠與他們取得SSH密鑰。它應該被鎖定到網關服務器上,除了SSH和SCP客戶端實用程序以外,不能通過目標進行授權。

是否有任何可能的方法來保護私鑰,有點像舊的DRM鎖定軟件到給定的PC?

謝謝!

+1

您可以在密鑰上指定加密密碼,以允許授權用戶使用密碼。您可能還想考慮好的Unix權限。 :) – MrGomez 2012-03-18 22:35:26

+1

SSH密鑰只是一個文件。如果人們有權閱讀和使用它們,他們也可以複製它。想想你在這裏問的問題。你可以*並且應該做的是爲每個用戶生成單獨的密鑰。如果有人登錄你的機器,那麼你至少可以確定它是誰。此外,您可以通過這種方式撤銷單個密鑰。 – 2012-03-18 22:37:42

回答

1

你關注的是手段而不是目的。

當您說您不希望用戶「能夠使用SSH密鑰」時,您的意思是您不希望用戶能夠在不通過網關的情況下登錄到目標計算機服務器。因爲誰在乎他們是否擁有鑰匙,如果他們沒有對他們有好處?

因此,使密鑰僅被授權用於網關服務器的源IP(在其提供訪問的目標機器上)的登錄。請參閱this reference,特別是from指令。當然,您還必須更改全局sshd_config中的AuthorizedKeysFile指令,以包含用戶無法在目標機器上寫入的地方(它允許多個路徑,所以您不必阻止它們添加自己的密鑰,但它聽起來像你想)。然後,只要網關服務器的用戶互相共享密鑰不成問題 - 也就是說,任何可以登錄網關的人都應該擁有密鑰 - 並且您的網絡可以防止源IP欺騙到目的地機器,你很好。

您可能還想重新考慮您正在使用的方法;如果網關服務器的目的是只是身份驗證(單點登錄和集中訪問控制),那麼最好使用像Kerberos這樣的分佈式身份驗證方法,而不是笨重的登錄到此處取得方法。