1. 程式人生 > WINDOWS開發 >[轉]Windows安裝OpenSSH服務

[轉]Windows安裝OpenSSH服務

Windows安裝OpenSSH服務

轉自:純粹之心89 最近專案在搞Jenkins持續整合,但是公司客戶生產環境伺服器大部分是Windows Service,運維基本依靠遠端桌面。Linux系統流行的OpenSSH並不支援Windows,網上搜索Windows安裝OpenSSH大部分是比較老的教程,也試著裝過MobaSSH。這種ssh是基於cygwin的,ssh連線後依然使用的linux命令,而且文件路徑寫法也不一樣容易出錯。。。

經過一番尋找,終於找到了微軟官方的解決方案:

基於PowerShell的OpenSSH:https://github.com/PowerShell/Win32-OpenSSH/releases

詳細說明可以參考Github的Wiki,這裡簡單說下安裝步驟:

安裝步驟:

1、進入連結下載最新 OpenSSH-Win64.zip(64位系統),解壓至C:\Program Files\OpenSSH

2、開啟cmd,cd進入C:\Program Files\OpenSSH(安裝目錄),執行命令:

powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1

3、設定服務自動啟動並啟動服務:

sc config sshd start= auto

net start sshd

到此服務已經安裝完畢,預設埠一樣是22,預設使用者名稱密碼為Window賬戶名和密碼,當然防火牆還是要設定對應埠允許通訊

修改設定:

通常linux下會修改ssh_config檔案來修改ssh配置,但在安裝目錄並沒有發現這個檔案,查閱官方wiki後發現,原來是在C:\ProgramData\ssh目錄下(此目錄為隱藏目錄)

埠號:Port 22

金鑰訪問:PubkeyAuthentication yes

密碼訪問:PasswordAuthentication no

空密碼:PermitEmptyPasswords no

然後進入C:\Users\賬戶名\.ssh目錄,建立authorized_keys公鑰檔案(也可在ssh_config修改路徑)(僅限7.7之前版本,7.9版本請看最後更新)

設定完成後重啟sshd服務,接下來就可以使用Xshell等工具使用金鑰連線了~

踩過的坑:

命令列不識別空格時:C:\Program Files\用C:\Progra~1\替代

Windows Service2012R2即使配置了.ssh/authorized_keys公鑰,連線時依然顯示沒有註冊公鑰。。。

查閱了官方wiki判斷可能是許可權問題:Fix SSH file permissions

進入C:\Program Files\OpenSSH(安裝目錄),右鍵 FixHostFilePermissions.ps1【使用PowerShell執行】,命令列提示全選是,重啟sshd服務後金鑰連線正常


2019.5.17更新:

新部署伺服器的時候,發現公鑰無法註冊,發現新版本有變動:

技術分享圖片

參考官方wiki:administrators_authorized_keys

Administrators使用者組的使用者連線公鑰,預設位置為

C:\ProgramData\ssh\administrators_authorized_keys

並且需要設定許可權,在CMD中執行命令:

icacls administrators_authorized_keys /inheritance:r

icacls administrators_authorized_keys /grant SYSTEM:(F)

icacls administrators_authorized_keys /grant BUILTIN\Administrators:(F)

修改ssh_config檔案:

AuthorizedKeysFile %programdata%/ssh/administrators_authorized_keys

重啟sshd服務,即可使用金鑰登陸SSH