簡單的SSH公鑰/私鑰問題

簡單的SSH公鑰/私鑰問題

我正在努力學習這一點,而不是僅僅遵循指南,這樣當人們確實提出要求時(他們確實這樣做了),我就可以推薦適當的行動。這是我得到的。

首先,使用以下命令產生兩個密鑰:

ssh-keygen -b 2048 -t rsa -C comment -f ~/.ssh/id_rsa

然後將金鑰的公共部分推送到authorized_keys2檔案中

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys2

(然後將其 chmod 為 600 或類似值)

您將私鑰下載到您的電腦 (id_rsa) 並將其輸入到 Putty 中以供讀取和驗證。

這些是設定此公鑰/私鑰身份驗證以無密碼登入 SSH 的正確步驟嗎?

答案1

雖然您描述的步驟可行,但有問題。您正在目標(遠端)電腦上產生金鑰對,然後將私鑰檔案下載到本機系統。這裡存在著您不應忽視的安全隱憂:

  • 如果遙控器已經洩露,那麼有人可能剛剛竊取了您的密碼。
  • 如果遠端系統將來受到損害,攻擊者將可以存取您的私鑰檔案(以及使用離線強力攻擊來嘗試解密它的奢侈)。

由於您使用 ssh 金鑰對(嘗試)解決密碼驗證固有的一些問題,因此您通常希望這樣做:

  • 在本機系統上產生密鑰對。理想情況下,私鑰將 (a) 永遠不會儲存在共用檔案系統(例如 NFS 主目錄)上,並且 (b) 永遠不會儲存在允許遠端登入的電腦上。

  • 廣泛發佈公鑰。我將我的公鑰保存在網站上,以便我可以在需要時取得它們。將公鑰放入authorized_keys您要連接的系統上的相應文件中。

如果您特別偏執,您可以將私鑰儲存在拇指驅動器上,並且僅使用該驅動器將密鑰加載到正在運行的ssh-agent.此時,您不再需要實際的密鑰檔案。

答案2

在客戶端系統上產生密鑰可能會更好。您最終可能會得到一個更大的authorized_keys 文件,但禁用受感染的系統會更容易。如果遷移伺服器的私鑰,則需要重新產生金鑰並將其遷移到所有客戶端系統。每個客戶端都應該有自己的密鑰。

Putty 用於puttygen產生金鑰。puttygen還將提供正確格式的公鑰以貼上到客戶端系統中。如果金鑰用於登入訪問,最好使用密碼保護金鑰。 Pageantssh-agent可用於將未受保護的金鑰保存在記憶體中,以便不需要在每次連線時重新輸入密碼。

新增一個金鑰並設定保護後,您可以新增其他金鑰,但需要重設權限。我通常會從系統上傳公鑰,其名稱類似於example.pub其中 example 是密鑰所屬系統的名稱。

許多實作已恢復用作authorized_keys密鑰檔案。此文件可用於限制接受金鑰的系統、強制運行命令、限制存取等。查看man頁面以了解更多詳情。

在某些情況下,客戶端系統上擁有多個金鑰可能很有用。這樣做可以支援使用沒有密碼的密鑰運行的批次過程。

答案3

看起來不錯。許多人會以相反的方向執行此操作(在本地生成密鑰,然後將密鑰推.pub送到伺服器),但兩者都可以工作。

相關內容