因為在windows上VSCode使用的預設ssh工具存在實作上的問題 ,導緻一旦我們直接使用預設ssh連接配接會有報錯:”過程試圖寫入的管道不存在”(The process tried to write to a nonexistent pipe)。
那出現這樣的問題我們有兩種解決辦法。
解決辦法一:安裝open ssh,并在設定ProxyCommand時使用安裝好的openssh來進行連接配接。
配置步驟:
一、安裝openssh
我會在後記部分解釋為什麼這步是必需的。我推薦直接通過windows的Powershell來安裝:
- 以管理者身份運作window Powershell(windows鍵+x,然後選(A)),然後鍵入如下兩條指令:
第一條指令:
Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'
(這條是用來檢測是否有适合安裝的openssh軟體,正常情況下應有如下傳回:)
Name : OpenSSH.Client~~~~0.0.1.0
State : NotPresent
Name : OpenSSH.Server~~~~0.0.1.0
State : NotPresent
第二條指令:
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
(這條是用來安裝openssh軟體,如果安裝完成應有如下傳回:)
Path :
Online : True
RestartNeeded : False
二、配置ssh config
配置ssh config來實作跳闆機通路可以極大地簡化我們的連接配接流程。
一、打開ssh config檔案(遠端資料總管 -> SSH Targets -> Configure -> ssh config)
二、配置ssh config
假設你的跳闆機的ip位址為A,目标機器的位址為B,那麼在你的config中寫下如下配置并儲存:
Host JumpMachine
# 跳闆機的ip位址
HostName A
# 你跳闆機的使用者名
User username
# 跳闆機登入端口
Port 22
Host TargetMachine
# 目标機的ip位址
HostName B
# 你目标機的使用者名
User username
# 目标機登入端口
Port 8080
ProxyCommand "openssh的安裝路徑"\ssh.exe -W %h:%p JumpMachine
其中”openssh的安裝路徑”因人而異(我的openssh的安裝路徑為C:\Windows\System32\OpenSSH\ssh.exe)。
如果一切正常的話,此時你在SSH Targets裡就可以找到TargetMachine啦!點選旁邊的小加号就可以開始遠端連接配接啦!美滋滋~
如果希望配置公鑰(ssh key)來實作無密碼登入,可以百度“ssh 公鑰登陸”。
解決辦法二:直接修改Windows的ssh的預設環境變量,解決git ssh和預設ssh的沖突
這是原本環境變量中路徑,将其删除
%SYSTEMROOT%\System32\OpenSSH\
這是我電腦上git中ssh的路徑,添加到環境變量(Path)中
C:\Program Files\Git\usr\bin
然後再次打開vscode連接配接虛拟機成功