window的ssh免密登入 Windows之間使用OpenSSH的ssh免密登入,排坑
阿新 • • 發佈:2022-12-12
## windows 開啟ssh共享服務 [(46條訊息) win10 開啟ssh server服務 遠端登入_Ch3n的部落格-CSDN部落格_ssh遠端登入](https://blog.csdn.net/weixin_43064185/article/details/90080815)
```Restart-Service sshd```
Windows之間使用OpenSSH的ssh免密登入,排坑
安裝
安裝OpenSSH
需要安裝OpenSSH客戶端和伺服器,win10自帶客戶端,我們安裝伺服器即可。
設定 -- 應用 -- 可選功能 -- 新增 -- 新增 OpenSSH 伺服器
配置
公鑰
- 在客戶端上,命令列執行
ssh-keygen -t rsa
id_rsa
和id_rsa.pub
。(注意:命令列不能使用中文的powershell,在使用powershell中文生成檔案的時候預設使用utf-16
編碼而不是utf-8
,這會導致公鑰過長出現line 1 exceeds size limit
錯誤) - 在服務端上,以使用者身份開啟 powershell,依次執行以下命令:
cd $env: USERPROFILE # 進入使用者目錄 mkdir. ssh # 新建.ssh資料夾(如果沒有的話) cd. ssh New-Item authorized_keys # 建立檔案authorized_keys
- 將
id_rsa.pub
.ssh\authorized_keys
檔案中; - 許可權設定,將
.ssh\authorized_keys
檔案右鍵屬性 -- 安全 -- 高階 -- 點選“禁用繼承”--當出現提示時,選擇“將繼承的許可權轉換為此物件的顯式許可權”。然後將許可權條目刪除至只剩“SYSTEM”、自己的賬戶、“Administrators”。(此步我預設就是這三個使用者,所以只用修改禁用繼承)
- 重啟服務:
net stop sshd
net start sshd
修改配置
- 開啟sshd配置檔案
C:\ProgramData\ssh\sshd.config
,注意ProgramData
- 編輯配置檔案:
確保以下3條沒有被註釋
PubkeyAuthentication yes # 使用公鑰
AuthorizedKeysFile .ssh/authorized_keys # 公鑰位置
PasswordAuthentication no # 免密登入
確保以下2條有註釋掉
#Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
- 重啟服務:
net stop sshd
net start sshd
測試
回到客戶端 ssh your_userName@your_IP_Adress,此時無需密碼直接登入說明正常(首次登陸可能會提示是否加入known_hosts,yes即可)。
Tips
sshd debug
在ssh伺服器中若想檢視執行細節,可以:
- 關閉sshd服務
net stop sshd
; - 使用
sshd -d
開啟sshd服務;
這樣可以檢視debug細節。
如果在執行ssh命令時想檢視執行細節,可以使用引數 -vvv
,三個v表示檢視debug級別為3的細節,如:
ssh -vvv localhost
參考連結
- Stackflow問答
- 知乎文章
- [Windows之間使用OpenSSH的ssh免密登入,排坑 - Robinbin - 部落格園](https://www.cnblogs.com/robinbin/p/16162608.html)
安裝
安裝OpenSSH
需要安裝OpenSSH客戶端和伺服器,win10自帶客戶端,我們安裝伺服器即可。
設定 -- 應用 -- 可選功能 -- 新增 -- 新增 OpenSSH 伺服器
配置
公鑰
- 在客戶端上,命令列執行
ssh-keygen -t rsa
,這將生成兩個檔案id_rsa
和id_rsa.pub
。(注意:命令列不能使用中文的powershell,在使用powershell中文生成檔案的時候預設使用utf-16
編碼而不是utf-8
,這會導致公鑰過長出現line 1 exceeds size limit
錯誤) - 在服務端上,以使用者身份開啟 powershell,依次執行以下命令:
cd $env: USERPROFILE # 進入使用者目錄 mkdir. ssh # 新建.ssh資料夾(如果沒有的話) cd. ssh New-Item authorized_keys # 建立檔案authorized_keys
- 將
id_rsa.pub
檔案的內容從客戶端貼上到上一步中的.ssh\authorized_keys
檔案中; - 許可權設定,將
.ssh\authorized_keys
檔案右鍵屬性 -- 安全 -- 高階 -- 點選“禁用繼承”--當出現提示時,選擇“將繼承的許可權轉換為此物件的顯式許可權”。然後將許可權條目刪除至只剩“SYSTEM”、自己的賬戶、“Administrators”。(此步我預設就是這三個使用者,所以只用修改禁用繼承)
- 重啟服務:
net stop sshd
net start sshd
修改配置
- 開啟sshd配置檔案
C:\ProgramData\ssh\sshd.config
,注意ProgramData
是隱藏資料夾; - 編輯配置檔案:
確保以下3條沒有被註釋
PubkeyAuthentication yes # 使用公鑰
AuthorizedKeysFile .ssh/authorized_keys # 公鑰位置
PasswordAuthentication no # 免密登入
確保以下2條有註釋掉
#Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
- 重啟服務:
net stop sshd
net start sshd
測試
回到客戶端 ssh your_userName@your_IP_Adress,此時無需密碼直接登入說明正常(首次登陸可能會提示是否加入known_hosts,yes即可)。
Tips
sshd debug
在ssh伺服器中若想檢視執行細節,可以:
- 關閉sshd服務
net stop sshd
; - 使用
sshd -d
開啟sshd服務;
這樣可以檢視debug細節。
如果在執行ssh命令時想檢視執行細節,可以使用引數 -vvv
,三個v表示檢視debug級別為3的細節,如:
ssh -vvv localhost
參考連結
- Stackflow問答
- 知乎文章
- [Windows之間使用OpenSSH的ssh免密登入,排坑 - Robinbin - 部落格園](https://www.cnblogs.com/robinbin/p/16162608.html)