首頁 > 軟體

在 Windows 使用 PuTTYgen 上生成 SSH 金鑰

2020-06-16 16:33:34

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 。

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

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

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

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

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

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

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

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

  5. 右鍵單擊標記為“Public key for pasting into OpenSSH authorized_keys file”的文字欄位,然後單擊“全選”選擇所有字元。開啟文字編輯器,貼上字元並儲存。確保你貼上整個金鑰。建議將檔案儲存在儲存私鑰的同一目錄中,使用相同名稱的私鑰和 .txt 或 .pub 作為副檔名。

    這是您將其新增到 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 埠將降低自動攻擊的風險。

如果您遇到問題或有反饋,請在下面留言。


IT145.com E-mail:sddin#qq.com