1. 程式人生 > 其它 >window的ssh免密登入 Windows之間使用OpenSSH的ssh免密登入,排坑

window的ssh免密登入 Windows之間使用OpenSSH的ssh免密登入,排坑

## 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 伺服器

配置

公鑰

  1. 在客戶端上,命令列執行 ssh-keygen -t rsa
     ,這將生成兩個檔案 id_rsa 和 id_rsa.pub。(注意:命令列不能使用中文的powershell,在使用powershell中文生成檔案的時候預設使用 utf-16 編碼而不是 utf-8,這會導致公鑰過長出現 line 1 exceeds size limit 錯誤
  2. 在服務端上,以使用者身份開啟 powershell,依次執行以下命令:
    cd $env: USERPROFILE # 進入使用者目錄
    mkdir. ssh # 新建.ssh資料夾(如果沒有的話)
    cd. ssh
    New-Item authorized_keys # 建立檔案authorized_keys
    
  3. 將 id_rsa.pub
     檔案的內容從客戶端貼上到上一步中的 .ssh\authorized_keys 檔案中;
  4. 許可權設定,將 .ssh\authorized_keys 檔案右鍵屬性 -- 安全 -- 高階 -- 點選“禁用繼承”--當出現提示時,選擇“將繼承的許可權轉換為此物件的顯式許可權”。然後將許可權條目刪除至只剩“SYSTEM”、自己的賬戶、“Administrators”。(此步我預設就是這三個使用者,所以只用修改禁用繼承)
  5. 重啟服務:
net stop sshd
net start sshd

修改配置

  1. 開啟sshd配置檔案 C:\ProgramData\ssh\sshd.config ,注意 ProgramData
     是隱藏資料夾;
  2. 編輯配置檔案:
確保以下3條沒有被註釋
PubkeyAuthentication yes # 使用公鑰
AuthorizedKeysFile	.ssh/authorized_keys # 公鑰位置
PasswordAuthentication no # 免密登入

確保以下2條有註釋掉
#Match Group administrators
#  AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
  1. 重啟服務:
net stop sshd
net start sshd

測試

回到客戶端 ssh your_userName@your_IP_Adress,此時無需密碼直接登入說明正常(首次登陸可能會提示是否加入known_hosts,yes即可)。

Tips

sshd debug

在ssh伺服器中若想檢視執行細節,可以:

  1. 關閉sshd服務 net stop sshd
  2. 使用 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 伺服器

配置

公鑰

  1. 在客戶端上,命令列執行 ssh-keygen -t rsa ,這將生成兩個檔案 id_rsa 和 id_rsa.pub。(注意:命令列不能使用中文的powershell,在使用powershell中文生成檔案的時候預設使用 utf-16 編碼而不是 utf-8,這會導致公鑰過長出現 line 1 exceeds size limit 錯誤
  2. 在服務端上,以使用者身份開啟 powershell,依次執行以下命令:
    cd $env: USERPROFILE # 進入使用者目錄
    mkdir. ssh # 新建.ssh資料夾(如果沒有的話)
    cd. ssh
    New-Item authorized_keys # 建立檔案authorized_keys
    
  3. 將 id_rsa.pub 檔案的內容從客戶端貼上到上一步中的 .ssh\authorized_keys 檔案中;
  4. 許可權設定,將 .ssh\authorized_keys 檔案右鍵屬性 -- 安全 -- 高階 -- 點選“禁用繼承”--當出現提示時,選擇“將繼承的許可權轉換為此物件的顯式許可權”。然後將許可權條目刪除至只剩“SYSTEM”、自己的賬戶、“Administrators”。(此步我預設就是這三個使用者,所以只用修改禁用繼承)
  5. 重啟服務:
net stop sshd
net start sshd

修改配置

  1. 開啟sshd配置檔案 C:\ProgramData\ssh\sshd.config ,注意 ProgramData 是隱藏資料夾;
  2. 編輯配置檔案:
確保以下3條沒有被註釋
PubkeyAuthentication yes # 使用公鑰
AuthorizedKeysFile	.ssh/authorized_keys # 公鑰位置
PasswordAuthentication no # 免密登入

確保以下2條有註釋掉
#Match Group administrators
#  AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
  1. 重啟服務:
net stop sshd
net start sshd

測試

回到客戶端 ssh your_userName@your_IP_Adress,此時無需密碼直接登入說明正常(首次登陸可能會提示是否加入known_hosts,yes即可)。

Tips

sshd debug

在ssh伺服器中若想檢視執行細節,可以:

  1. 關閉sshd服務 net stop sshd
  2. 使用 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)