題 可以在多台計算機/服務之間共享私鑰文件嗎?


所以我們都知道如何使用SSH等公鑰/私鑰。但是,使用/重用它們的最佳方法是什麼?我應該永遠把它們放在安全的地方嗎?我的意思是,我需要一對密鑰才能訪問GitHub。我從頭開始創建了一對,並使用它一段時間來訪問GitHub。然後我格式化我的硬盤並丟失了那對。大不了的,我創建了一對新配置並配置GitHub來使用我的新配對。還是我不想失去的東西?

我還需要一對公鑰/私鑰來訪問我們公司的系統。我們的管理員問我公鑰,然後我生成了一對新的並給了他。通常更好的是創建一個新的對來訪問不同的系統,還是更好地擁有一對並重用它來訪問不同的系統?同樣,最好是創建兩個不同的對並使用一個從家中訪問我們的公司係統,另一個從工作中訪問系統,還是只有一對並從兩個地方使用它更好?


106
2017-09-16 13:15


起源


這不是您問題的直接答案,但建議每個密鑰都有密碼短語。理想情況下,每個密鑰都使用單獨的密碼(使用密碼管理器)。原因如下:如果私鑰被盜用(筆記本電腦被盜,計算機被黑了),那麼你有一些時間可以強制使用密鑰,你可以在擁有它的所有機器上更換公鑰,在攻擊者可以之前。資源: help.ubuntu.com/community/SSH/OpenSSH/... - Xandor Schiefer


答案:


你肯定應該有單獨的私鑰 每個來源。基本上這意味著通常應該有每個私鑰的一個副本(不包括備份)。在密切相關的機器中使用相同的私鑰是可以的,在這種情況下,分成一個基本上可以讓你訪問另一個(例如,如果他們在彼此的 shosts.equiv)。不要在不同領域(例如家庭和工作)的計算機上使用相同的私鑰,永遠不要在兩個用戶之間共享私鑰,也不要在筆記本電腦和任何其他計算機之間共享私鑰。

在大多數情況下,我不認為為不同的目的地提供不同的私鑰。如果私鑰被洩露,那麼存儲在同一目錄中的所有其他私鑰也肯定會受到損害,因此會增加複雜性而不會帶來任何安全性好處。

如果遵循這些原則,每個密鑰對都會標識一個(機器,用戶)對,這使得授權管理更加容易。

我可以想到每個來源的單個私鑰的一般規則有兩個例外:

  • 如果您有一個無密碼密鑰,只允許訪問特定計算機上的特定命令(例如自動備份或通知機制),則該密鑰必須與常規shell訪問密鑰不同。
  • 如果某些計算機間歇性地連接,您可能會有一個舊的私鑰和一個新的私鑰,直到您完成部署新密鑰。

83
2017-09-16 18:26



這就是我一直使用我的密鑰對的方式。我不明白為什麼GitHub主張在他們的設置說明中生成一個新的密鑰對。我忽略了它並使用了我的標準密鑰對。我認為他們很保守。 - toolbear74
好的,所以你說“不要在不同領域的機器上使用相同的私鑰”但是如果DNS根據你的位置將一個給定的主機名解析到任何一台機器怎麼辦?在沒有共享私鑰的情況下,當我嘗試ssh或rsync到該主機名時,我收到警告或失敗,因為ssh對於為同一主機名擁有兩個單獨的密鑰感到困惑。 - Michael
@Michael我不明白你可能遇到什麼問題 用戶 您描述的場景中的鍵,這是該線程的內容。 SSH會感到困惑 主辦 密鑰,但作為用戶,你看到的是主機的公鑰,而不是主機的私鑰,共享主機的私鑰是危險的 - 我只建議如果主機是完全等效的(如果其中一個主機發生故障則冗餘) ),甚至可能不是。 - Gilles
喔好吧。似乎兩者之間沒有很多明顯的區別,只是假設你知道正在談論哪一個。 - Michael
@JSBach每個領域具有單獨的密鑰允許您定義更細粒度的權限(存儲在低安全性領域A上的密鑰允許在A的機器之間使用,但登錄到B需要更強的認證因子)並允許您撤銷它們單獨(領域A受到了損害,但我仍然可以從B登錄到C)。 SSO是您登錄最高安全性系統的情況,然後您可以在其他地方登錄。我不知道他們在每個用戶擁有多個密鑰時會​​遇到什麼風險。這將是一個主題 信息安全。 - Gilles


我不知道什麼是最好的方式,但我可以告訴我的方式。

作為系統管理員,我使用不同的密鑰以root身份訪問每個服務器/服務。這樣,如果密鑰丟失或受損,我將風險限制在單個服務器上,而我不需要使用全新密鑰更新我的所有服務。

說到用戶,我為每個用戶使用不同的密鑰。使用該密鑰,用戶可以作為非特權用戶訪問他需要的服務。這樣,我可以輕鬆地向每個用戶授予或撤消對單個服務的訪問權限。如果用戶丟失了他的密鑰,我可以從所有服務中刪除它並限制未經授權訪問的風險。


4
2017-09-16 14:28



+1我將與我的老闆討論新的密鑰使用政策;-)每台服務器/服務聽起來比每個網絡更安全 - Diskilla


我相信你可以在任何地方使用私鑰,只要你在上面加一個密碼,意思是說如果你想用幾台機器分享你的私鑰,比如筆記本電腦1,2,桌面1,2,應該沒問題。

根據我的經驗,我的主機是我的桌面,我使用其強大的處理器完成了我的大部分工作,但有時我需要在移動設備上使用我的筆記本電腦,在數據中心和事情中進行故障排除,所以,我仍然可以登錄到任何主機我有我的公鑰存在於。


1
2018-06-27 08:27



在這裡閱讀最佳答案。你這樣做是錯的。這不是你不能這樣做但你不應該這樣做。 - PhilT
看不出為什麼所有的downvotes。大學網絡(例如)通常具有聯網的主目錄,因此用戶可以在任何地方使用相同的私鑰,即使在您給出的筆記本電腦上也是如此。只要你不通過互聯網不加密地複制它,那麼我認為如果你了解風險就沒關係。這種方式也更方便,不必將公鑰添加到2,000個不同的地方只是因為你登錄了另一台機器。 - Asfand Qazi
Upvoted,因為你不應該失去這個答案的代表。這是個人偏好,顯然每個服務和機器使用一個單獨的密鑰最終會給你更多的控制權,但有時根據你的使用情況,這只是浪費時間。 - Daniel Dewhurst


在我公司,我們使用這些特定於用戶的密鑰。這意味著案例二。用戶擁有自己的密鑰,這個密鑰用於他用於連接公司係統的每台機器。我的意見是為一個系統使用一個密鑰。這意味著您需要在連接到特定網絡所需的每台計算機上使用此密鑰。對於您的情況,這將是GitHub的一個關鍵和公司係統的一個關鍵。所以,如果你的管理員再次問你,我會給他與上次相同的密鑰。不是新的。 但是,我不知道這些密鑰是否有共同的使用策略,從那以後我做錯了。那肯定是可能的;-)


0
2017-09-16 13:27





您生成的公鑰適合所有人。它將允許他們 a)檢查身份驗證 b)為您加密

私鑰是私密的。 它只適合你。這是你應該在一個安全的地方備份的關鍵。如果將其保存在USB記憶棒上,也可以使用安全密碼對其進行加密。

公鑰是您對他人的身份。 所以沒有問題/最好使用一個密鑰對,至少在你不想使用明確的新身份的情況下,所以其他人不會知道它就是你。


0
2017-09-16 13:30



謝謝,但你的回答大多與我的問題無關。請參閱@ Diskilla的回答。 - Behrang