window下配置ssh免密登錄服務器
本地windows遠程登錄我的ssh服務器10.10.101.xx服務器,想要每次都免密登錄這個服務器.
記錄下教程,防止后期忘記,指導我實現這個過程。
教程
二、實踐步驟:Windows 上配置 SSH 免密登錄
2.1 確認環境要求
-
Windows 版本 :Windows 10 1809 或更高版本(已內置 OpenSSH 客戶端)。
-
服務器確保
sshd_config
中啟用公鑰認證(默認已啟用):PubkeyAuthentication yes
2.2 步驟 1:生成 SSH 密鑰對
-
打開 PowerShell 或 CMD,運行以下命令生成密鑰:
ssh-keygen -t rsa
-
按提示選擇保存路徑(默認為
C:\Users\你的用戶名\.ssh\id_rsa
)。 -
設置 passphrase(可直接回車跳過,實現免密登錄)。
-
-
生成后,你會得到兩個文件:
- 私鑰 :
~/.ssh/id_rsa
(本地保留) - 公鑰 :
~/.ssh/id_rsa.pub
(需上傳到服務器)
- 私鑰 :
2.3 步驟 2:將公鑰上傳到服務器
方法一:使用 scp
和手動追加
-
上傳公鑰文件到服務器:
scp .ssh/id_rsa.pub 用戶名@10.10.100.xx:~/id_rsa.pub
- 替換
用戶名
為你的服務器賬戶名(如user
)。
- 替換
-
登錄服務器并添加公鑰:
ssh 用戶名@10.10.100.99mkdir -p ~/.sshcat ~/id_rsa.pub >> ~/.ssh/authorized_keyschmod 700 ~/.sshchmod 600 ~/.ssh/authorized_keysrm ~/id_rsa.pub
2.4 步驟 3:配置 SSH 客戶端(可選)
編輯本地 SSH 配置文件,簡化登錄命令:
-
創建或編輯配置文件:
powershell
notepad ~/.ssh/config
-
添加以下內容:
Host myserver? HostName 10.10.100.99? User 用戶名? IdentityFile ~/.ssh/id_rsa
- 替換
用戶名
為服務器賬戶名。
- 替換
-
后續登錄只需:ssh myserver
2.5 步驟 4:測試免密登錄
運行以下命令測試:ssh 用戶名@10.10.100.99
或使用配置別名:ssh myserver
- 如果無需輸入密碼即可登錄,說明配置成功!
原理
一、原理講解:SSH 公鑰認證如何工作?
1.1 非對稱加密基礎
SSH 免密登錄基于 非對稱加密 (Asymmetric Cryptography),使用一對密鑰:
- 公鑰(Public Key) :可公開分享,用于加密或驗證身份。
- 私鑰(Private Key) :必須嚴格保密,用于解密或證明身份。
1.2 SSH 登錄流程
-
客戶端生成密鑰對 :在本地生成公鑰和私鑰。
-
上傳公鑰到服務器 :將公鑰添加到服務器的
~/.ssh/authorized_keys
文件中。 -
登錄時的身份驗證 :
- 服務器發送一個隨機挑戰(Challenge)。
- 客戶端用私鑰加密該挑戰并返回。
- 服務器用公鑰解密,驗證身份,無需密碼即可登錄。
1.3 安全性說明
- 私鑰文件(如
id_rsa
)必須妥善保管,避免泄露。 - 服務器上的
~/.ssh/authorized_keys
文件權限需嚴格限制(如600
),否則 SSH 會拒絕登錄。 - 可選擇為私鑰設置 passphrase,但免密登錄通常不設。