最近接盘了实验室的工作,需要重新配置连接自己的VScode的SSH远程连接服务器,结果配置了一个下午都没搞好,决定记录一下,希望大家避免踩坑。在vscode上遇到的是这个报错:
错误日志
[11:40:12.097] Checking ssh with "C:\Windows\System32\Wbem\ssh.exe -V"
[11:40:12.098] Got error from ssh: spawn C:\Windows\System32\Wbem\ssh.exe ENOENT
[11:40:12.098] Checking ssh with "C:\Windows\System32\WindowsPowerShell\v1.0\ssh.exe -V"
[11:40:12.099] Got error from ssh: spawn C:\Windows\System32\WindowsPowerShell\v1.0\ssh.exe ENOENT
[11:40:12.099] Checking ssh with "C:\Windows\System32\OpenSSH\ssh.exe -V"
[11:40:12.137] > OpenSSH_for_Windows_8.6p1, LibreSSL 3.4.3
[11:40:12.144] Running script with connection command: "C:\Windows\System32\OpenSSH\ssh.exe" -T -D 52967 "这里写的是我的IP,我删了" bash
[11:40:12.150] Terminal shell path: C:\WINDOWS\System32\cmd.exe
[11:40:12.365] > 此时不应有 &。
> ]0;C:\WINDOWS\System32\cmd.exe
[11:40:12.365] Got some output, clearing connection timeout
[11:40:13.655] "install" terminal command done
[11:40:13.655] Install terminal quit with output: ]0;C:\WINDOWS\System32\cmd.exe
[11:40:13.655] Received install output: ]0;C:\WINDOWS\System32\cmd.exe
[11:40:13.655] Failed to parse remote port from server output
[11:40:13.656] Resolver error: Error:
这个前提是前面的远端(.vscode-server/bin)和主机端(ssh)等等的配置没有问题。建议先在shell上输入密码测试一下:
ssh 用户名@测试IP -p 22
问题分析
最开始在网上找到的方案是让我换Shell,结果我发现根本换不了,改了默认也无法解决这个bug。最后我发现了我电脑的一个bug:cmd.exe点击后总是闪退。
问题原因
由于我卸载更新过anaconda,在我卸载anaconda时,anaconda自动修改了注册表的数据,进而导致cmd闪退,进而导致vscode-remote-SSH无法打开cmd。
解决方案
- 重新修改注册表即可。
-
win键+r 输入regedit 回车,打开注册表编辑器页面
-
找到HKEY_CURRENT_USER\Software\Microsoft\Command Processor文件夹。
-
如果有AutoRun这个变量,则将变量数值数据全部删除掉“置空”。
如果没有AutoRun这个变量,则右键,点击新建字符串值,变量名称命名为AutoRun,变量数值不用设置,自动就是空值。下图是我的修改前。
-
找到 HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor文件夹。同样的,对AutoRun与上一步相同操作。
-
重启vscode,问题解决。修改注册表不需要重启电脑。
- 直接重装Windows系统,一了百了。
参考链接
vscode-remote官方解答
Anaconda解答