最近項目在搞Jenkins持續(xù)集成巾乳,但是公司客戶生產(chǎn)環(huán)境服務(wù)器大部分是Windows Service,運維基本依靠遠(yuǎn)程桌面鸟召。Linux系統(tǒng)流行的OpenSSH并不支持Windows胆绊,網(wǎng)上搜索Windows安裝OpenSSH大部分是比較老的教程,也試著裝過MobaSSH欧募。這種ssh是基于cygwin的压状,ssh連接后依然使用的linux命令,而且文檔路徑寫法也不一樣容易出錯。种冬。镣丑。
經(jīng)過一番尋找,終于找到了微軟官方的解決方案:
基于PowerShell的OpenSSH:https://github.com/PowerShell/Win32-OpenSSH/releases
詳細(xì)說明可以參考Github的Wiki娱两,這里簡單說下安裝步驟:
安裝步驟:
1莺匠、進(jìn)入鏈接下載最新 OpenSSH-Win64.zip(64位系統(tǒng)),解壓至C:\Program Files\OpenSSH
2十兢、打開cmd趣竣,cd進(jìn)入C:\Program Files\OpenSSH(安裝目錄),執(zhí)行命令:
powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1
3旱物、設(shè)置服務(wù)自動啟動并啟動服務(wù):
sc config sshd start= auto
net start sshd
到此服務(wù)已經(jīng)安裝完畢遥缕,默認(rèn)端口一樣是22,默認(rèn)用戶名密碼為Window賬戶名和密碼宵呛,當(dāng)然防火墻還是要設(shè)置對應(yīng)端口允許通訊
修改設(shè)置:
通常linux下會修改ssh_config文件來修改ssh配置单匣,但在安裝目錄并沒有發(fā)現(xiàn)這個文件,查閱官方wiki后發(fā)現(xiàn)烤蜕,原來是在C:\ProgramData\ssh目錄下(此目錄為隱藏目錄)
端口號:Port 22
密鑰訪問:PubkeyAuthentication yes
密碼訪問:PasswordAuthentication no
空密碼:PermitEmptyPasswords no
然后進(jìn)入C:\Users\賬戶名\.ssh目錄封孙,創(chuàng)建authorized_keys公鑰文件(也可在ssh_config修改路徑)(僅限7.7之前版本,7.9版本請看最后更新)
設(shè)置完成后重啟sshd服務(wù)讽营,接下來就可以使用Xshell等工具使用密鑰連接了~
踩過的坑:
命令行不識別空格時:C:\Program Files\用C:\Progra~1\替代
Windows Service2012R2即使配置了.ssh/authorized_keys公鑰虎忌,連接時依然顯示沒有注冊公鑰。橱鹏。膜蠢。
查閱了官方wiki判斷可能是權(quán)限問題:Fix SSH file permissions
進(jìn)入C:\Program Files\OpenSSH(安裝目錄),右鍵 FixHostFilePermissions.ps1【使用PowerShell運行】莉兰,命令行提示全選是挑围,重啟sshd服務(wù)后密鑰連接正常
2019.5.17更新:
新部署服務(wù)器的時候,發(fā)現(xiàn)公鑰無法注冊糖荒,發(fā)現(xiàn)新版本有變動:
參考官方wiki:administrators_authorized_keys
Administrators用戶組的用戶連接公鑰杉辙,默認(rèn)位置為
C:\ProgramData\ssh\administrators_authorized_keys
并且需要設(shè)置權(quán)限,在CMD中執(zhí)行命令:
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服務(wù)捶朵,即可使用密鑰登陸SSH