在 Windows 上生成 SSH 公鑰(id_rsa.pub)的步驟
以下是使用 Windows 內建 OpenSSH 工具生成 SSH 金鑰對(含 id_rsa.pub
)的詳細步驟:
步驟 1:開啟 PowerShell
- 按
Win + X
,選擇 Windows PowerShell 或 終端機(非命令提示字元)。 - 建議以 系統管理員身分執行(非必需,但可避免權限問題)。
步驟 2:生成 SSH 金鑰對
輸入以下命令(使用 RSA 演算法,4096 位元提高安全性):
ssh-keygen -t rsa -b 4096
步驟 3:設定金鑰儲存路徑
-
系統會提示:
Enter file in which to save the key (C:\Users\你的用戶名\.ssh\id_rsa):
- 直接按
Enter
使用預設路徑(推薦)。 - 若需自訂路徑,輸入完整路徑(例如
C:\my_keys\server_key
)。
- 直接按
-
安全提示:
若檔案已存在,會詢問是否覆蓋。請確認避免誤刪舊金鑰!
步驟 4:設定金鑰密碼(Passphrase)
-
系統提示:
Enter passphrase (empty for no passphrase):
- 建議輸入密碼:即使私鑰被盜也需密碼才能使用(提高安全性)。
- 若跳過,直接按
Enter
(不建議,尤其生產環境)。
-
再次輸入密碼確認:
Enter same passphrase again:
步驟 5:完成生成
- 成功後顯示:
Your identification has been saved in C:\Users\用戶名\.ssh\id_rsa. Your public key has been saved in C:\Users\用戶名\.ssh\id_rsa.pub.
- 金鑰指紋(SHA256)會一併顯示,用於後續驗證。
步驟 6:取得公鑰內容(id_rsa.pub)
-
使用以下命令複製公鑰內容:
cat ~\.ssh\id_rsa.pub
- 或手動用記事本開啟檔案:
C:\Users\你的用戶名\.ssh\id_rsa.pub
- 或手動用記事本開啟檔案:
-
公鑰格式範例:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC...(長串字元)... user@host
將公鑰部署到伺服器
-
複製公鑰內容:
從id_rsa.pub
複製全部文字(開頭ssh-rsa
到結尾郵箱)。 -
登入遠端伺服器:
ssh 你的帳號@伺服器IP
-
將公鑰加入
authorized_keys
:# 若目錄不存在則建立 mkdir -p ~/.ssh chmod 700 ~/.ssh # 將公鑰寫入文件 echo "貼上複製的公鑰內容" >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys
測試 SSH 登入
ssh -i C:\Users\用戶名\.ssh\id_rsa 你的帳號@伺服器IP
- 若設定了密碼,會提示輸入金鑰密碼(Passphrase)。
- 成功後即可免密碼登入!
進階設定(可選)
使用 ssh-agent 管理金鑰密碼
避免每次輸入金鑰密碼:
# 啟動 ssh-agent 服務
Start-Service ssh-agent
# 將私鑰加入 agent
ssh-add ~\.ssh\id_rsa
輸入一次密碼後,當前會話即可重複使用金鑰。
疑難排解
-
權限錯誤:
確保~/.ssh
目錄權限為700
,authorized_keys
為600
。 -
連線被拒:
檢查伺服器 SSH 設定(/etc/ssh/sshd_config
):PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
總結流程
graph LR
A[開啟 PowerShell] --> B[執行 ssh-keygen]
B --> C[設定路徑與密碼]
C --> D[取得 id_rsa.pub 內容]
D --> E[複製公鑰到伺服器]
E --> F[測試登入]
透過以上步驟,即可在 Windows 安全生成 SSH 金鑰並實現免密碼登入伺服器!