在 Windows 使用 PuTTYgen 上生成 SSH 密鑰

Secure Shell(SSH) 是一種加密網絡協議,用於客戶端和服務器之間的安全連接,並支持各種身份驗證機制。

兩種最流行的機制是基於密碼的身份驗證和基於公鑰的身份驗證。使用 SSH 密鑰比傳統的密碼驗證更安全,更方便。

本教程介紹如何使用 PuTTYgen 在 Windows 上生成 SSH 密鑰。我們還將向您展示如何設置基於 SSH 密鑰的身份驗證,並在不輸入密碼的情況下連接到遠程 Linux 服務器。

下載 PuTTYgen

PuTTYgen 是一個開源實用程序,允許您爲最流行的 Windows SSH 客戶端 PuTTY 生成 SSH 密鑰。

PuTTYgen 作爲獨立的可執行文件提供,它也是 PuTTY.msi 安裝包的一部分。如果您沒有安裝 PuTTYgen ,請轉到 PuTTY 下載頁面並下載 PuTTY 安裝包。安裝很簡單,雙擊安裝包並按照說明操作。

使用 PuTTYgen 創建 SSH 密鑰

要使用 PuTTYgen 在 Windows 上生成 SSH 密鑰對,請執行以下步驟:

  1. 啓動 PuTTYgen 工具,雙擊其 .exe 文件或轉到 Windows 開始菜單→ PuTTY (64位)→ PuTTYgen 。

    啓動PuTTYgen工具

    對於 Type of key to generate,保留默認 RSA 。對於大多數人來說,Number of bits in a generated key 2048 就足夠了。或者,您可以將其更改爲 4096 。

  2. 單擊 Generate 按鈕開始生成新密鑰對的過程。

    生成 SSH 密鑰 PuTTYgen

    系統會要求您將鼠標移到 Key 部分的空白區域以生成一些隨機性。移動指針時,綠色進度條將前進。這個過程應該需要幾秒鐘。

  3. 生成過程完成後,公鑰將顯示在窗口中。

    Passphrase PuTTYgen

    (可選)如果要使用密碼,請在“Key passphrase”字段中鍵入密碼,並在“Confirm passphrase”字段中確認相同的密碼。如果您選擇使用密碼短語,則可以通過保護私鑰免遭未經授權的使用來獲得額外的安全保護。

    如果設置密碼,則每次使用私鑰時都需要輸入密碼。

  4. 單擊“保存私鑰”按鈕保存私鑰。您可以使用 .ppk 擴展名( PuTTY 私鑰)將文件保存在任何目錄中,但建議您將其保存在可以輕鬆找到它的位置。爲私鑰文件使用描述性名稱是很常見的。

    或者,您也可以保存公鑰,但稍後可以通過加載私鑰重新生成公鑰。

  5. 右鍵單擊標記爲“Public key for pasting into OpenSSH authorized_keys file”的文本字段,然後單擊“全選”選擇所有字符。打開文本編輯器,粘貼字符並保存。確保你粘貼整個密鑰。建議將文件保存在保存私鑰的同一目錄中,使用相同名稱的私鑰和 .txt 或 .pub 作爲文件擴展名。

    公鑰PuTTYgen

    這是您將其添加到 Linux 服務器的關鍵。

將公鑰複製到 Linux 服務器

現在您已生成 SSH 密鑰對,下一步是將公鑰複製到要管理的服務器。

啓動 PuTTY 程序並登錄到遠程 Linux 服務器。

如果您的用戶 SSH 目錄不存在,請使用 mkdir 命令創建它並設置正確的權限:

mkdir -p ~/.ssh
chmod 0700 ~/.ssh

用文本編輯器打開 ~/.ssh/authorized_keys 文件, 並粘貼在步驟 4 中複製的公鑰到 ~/.ssh/authorized_keys 中:

nano ~/.ssh/authorized_keys

整個公鑰文本應該在一行上。

運行以下 chown 命令以確保只有您的用戶可以讀寫該 ~/.ssh/authorized_keys 文件:

chmod 0600 ~/.ssh/authorized_keys

使用 SSH 密鑰登錄服務器

Pageant 是一種 PuTTY SSH 身份驗證代理,它將私鑰保存在內存中。 Pageant 二進制文件是 PuTTY.msi 安裝包的一部分,可以通過轉到 Windows 開始菜單→ PuTTY(64位) → Pageant 來啓動。

當您啓動 Pageant 時,它會在系統托盤中放置一個圖標。雙擊圖標,將打開 Pageant 窗口。

要加載密鑰,請按“Add key”按鈕,這將打開一個新文件對話框。找到私鑰文件,然後按“打開”。如果您尚未設置密碼,則會立即加載密鑰。否則,系統將提示您輸入密碼。

加載密鑰

輸入密碼, Pageant 將加載私鑰。

完成上述步驟後,您應該能夠登錄到遠程服務器而不會被提示輸入密碼。

要測試它,請打開一個新的 PuTTY SSH 會話並嘗試登錄到您的服務器。 PuTTY 將使用加載的密鑰,您將在不輸入密碼的情況下登錄 Linux 服務器。

禁用 SSH 密碼驗證

要爲服務器添加額外的安全層,可以禁用 SSH 的密碼身份驗證。

在禁用 SSH 密碼身份驗證之前,請確保無需密碼即可登錄服務器,並且您登錄的用戶具有 sudo 權限。

登錄到遠程服務器並使用文本編輯器打開 SSH 配置文件 /etc/ssh/sshd_config :

sudo nano /etc/ssh/sshd_config

搜索以下指令並按如下方式進行修改:

PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no

完成後,鍵入以下命令保存文件並重新啓動 SSH 服務:

sudo systemctl restart ssh

此時,禁用基於密碼的身份驗證。

總結

在本教程中,您學習瞭如何生成新的 SSH 密鑰對並設置基於 SSH 密鑰的身份驗證。您可以將相同的密鑰添加到多個遠程服務器。我們還向您展示瞭如何禁用 SSH 密碼身份驗證併爲您的服務器添加額外的安全層。

默認情況下, SSH 偵聽端口 22。  更改默認 SSH 端口將降低自動攻擊的風險。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章