[轉]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