VS Code 远程 SSH 连接无法工作

61

我试图在第二台电脑上安装vscode远程开发插件,但是在主机上可行的在第二个电脑上却无法运行。尝试重新安装vscode、扩展和使用旧版,但仍不起作用。

在尝试连接时,在选择操作系统后就会取消连接。因此,我甚至无法输入密码。我按照与另一台电脑相同的方式进行设置。

有任何想法吗?

[20:32:53.595] remote-ssh@0.55.0
[20:32:53.595] win32 x64
[20:32:53.596] SSH Resolver called for "ssh-remote+ssh.blabla", attempt 1
[20:32:53.597] SSH Resolver called for host: ssh.blabla
[20:32:53.597] Setting up SSH remote "ssh.blabla"
[20:32:53.610] Using commit id "58bb7b2331731bf72587010e943852e13e6fd3cf" and quality "stable" for server
[20:32:53.612] Install and start server if needed
[20:32:54.639] Checking ssh with "ssh -V"
[20:32:54.686] > OpenSSH_for_Windows_7.7p1, LibreSSL 2.6.5

[20:32:54.691] Running script with connection command: ssh -T -D 52819 ssh.blabla bash
[20:32:54.694] Terminal shell path: C:\WINDOWS\System32\cmd.exe
[20:32:54.758] >
]0;C:\WINDOWS\System32\cmd.exe
[20:32:54.758] Got some output, clearing connection timeout
[20:32:54.785] >
[20:32:55.045] > root@blabla's password: 
[20:32:55.045] Showing password prompt
[20:32:57.596] "install" terminal command done
[20:32:57.597] Install terminal quit with output: root@blabla's password: 
[20:32:57.597] Received install output: root@blabla's password: 
[20:32:57.598] Stopped parsing output early. Remaining text: root@blabla's password:
[20:32:57.598] Failed to parse remote port from server output
[20:32:57.603] Resolver error: Error: 
    at Function.Create (c:\Users\Manuel.vscode\extensions\ms-vscode-remote.remote-ssh-0.55.0\out\extension.js:1:130564)
    at Object.t.handleInstallOutput (c:\Users\Manuel.vscode\extensions\ms-vscode-remote.remote-ssh-0.55.0\out\extension.js:1:127671)
    at I (c:\Users\Manuel.vscode\extensions\ms-vscode-remote.remote-ssh-0.55.0\out\extension.js:127:106775)
    at processTicksAndRejections (internal/process/task_queues.js:94:5)
    at async c:\Users\Manuel.vscode\extensions\ms-vscode-remote.remote-ssh-0.55.0\out\extension.js:127:104774
    at async Object.t.withShowDetailsEvent (c:\Users\Manuel.vscode\extensions\ms-vscode-remote.remote-ssh-0.55.0\out\extension.js:127:109845)
    at async Object.t.resolve (c:\Users\Manuel.vscode\extensions\ms-vscode-remote.remote-ssh-0.55.0\out\extension.js:127:107960)
    at async c:\Users\Manuel.vscode\extensions\ms-vscode-remote.remote-ssh-0.55.0\out\extension.js:127:141955
[20:32:57.606] ------




[20:32:59.376] Password dialog canceled
[20:32:59.376] "install" terminal command canceled```

1
对我来说,删除Code文件夹并重新启动VS Code就可以了。 - trupthi
28个回答

83

根据您所在的系统,在第一次尝试连接时,将在您的服务器上设置和配置vscode-server。

在Linux中,它可以在/Home/<user>/.vscode-server中找到。

如果您使用的是Windows,请查看该位置。

第一个解决方案是尝试扩展命令:Remote-SSH: kill VS Code Server on Host

打开命令面板(CTRL + SHIFT + PCOMMAND + SHIFT + P(Mac))。

然后输入Remote kill

enter image description here

然后再尝试连接!(这将在主机上终止服务器!在下一次尝试时会重新启动)

如果这样还不行,问题仍然存在:

删除,rm

那么一个可行的解决方案是:通过终端(vscode终端,gnome-terminal等)连接到您的服务器。然后删除/Home/<user>/.vscode-server

在此之后尝试连接。在尝试中,服务器将被完全重新安装,成功的机会更大。 (我这样做了,对我有用,所以无论是什么导致vscode-server出错:重新开始就好了)

但是请注意:您将失去一些东西,如配置、元数据等(因为您将重新开始)。

更新:

如@natevw在评论中所述:

我发现只删除.vscode-server/bin子文件夹可以帮助解决问题,同时保留我的数据/设置。

只删除vscode-server/bin似乎效果不错,而配置、元数据等依旧保持原样。


嗨,我要如何打开这个窗口来输入远程杀死命令? - Apinorr
嗨,这是命令面板。您可以使用CTRL + SHIFT + P(或Mac中的COMMAND + SHIFT + P)来执行该操作。 - Mohamed Allal
4
我发现只删除.vscode-server/bin子文件夹可以帮助解决问题,并且保留了我的数据/设置。 - natevw
2
我使用了 rm /Home/<user>/.vscode-server,解决了我的问题。谢谢。 - MeiH
解决了!(在Windows上)我有两个远程Windows服务器,第一个正常工作,而第二个停止工作了。 我有相同的SSH日志,似乎VSCode无法再将其服务器复制到第二个服务器上(我不知道为什么)。我将文件从第一个服务器复制到第二个服务器:C:/Users/{myname1}/.vscode-server 从第一个服务器到第二个服务器 C:/Users/{myname2}/.vscode-server。之后,请确保使用正确的SSH用户{myname2}连接到服务器。 - Julha
显示剩余3条评论

26

我将Remote-SSH插件降级至0.51.0,然后在远程机器上执行rm -rf $HOME/.vscode-server命令。 再次连接时,VSCode将下载并安装一个新的.vscode-server。 然后升级Remote-SSH插件,一切正常。


1
这对我也起作用了。我能够通过命令提示符进行ssh,删除主目录中的.vscode-server文件,并尝试通过VSCode进行ssh,它起作用了...谢谢!! - Deepak Sadulla
非常感谢。这让我省了很多麻烦! - Sebastian Dengler
4
那对我没用。 - Christian Luneborg
甚至没有降级,对我来说也起作用了!只需在主机上删除该目录,然后尝试重新连接即可。 - ameerosein

21

我使用的一种方法是,在vscode设置(JSON)文件中添加以下行。

"remote.SSH.useLocalServer": false

VSCode settings


这对我有用。在第一次连接后,我删除了此设置,它仍然可以正常工作。 - Tommimon
对我来说,它导致了:接收到的安装输出为:/bin/sh: 1: ssh: 找不到 - mktplus

16

我遇到了同样的问题。在我执行了以下步骤后,问题得以解决:

在远程服务器上:

rm -rf ~/.vscode-server  
rm -rf ~/.vscode

在本地使用VS Code:

reinstall remote-ssh

6

如果以上所有方法都失败了,这是我解决问题的步骤。

首先,我能够使用简单的bash终端SSH到我的远程服务器(Ubuntu 22.04,Raspberry Pi 4,arm64)。因此,我使用我的终端(macOS)登录,并进入了以下位置:

cd $HOME/.vscode-server/bin/WHATEVER-HASH-YOU-HAVE/

在此目录中,有一个名为server.sh的文件。我尝试运行这个脚本,但是遇到了以下错误:
./node: error while loading shared libraries: libatomic.so.1: cannot open shared object file: No such file or directory

问题很明显:我的系统缺少一个共享库。要么是Node.js现在需要它,要么是SSH-Remote扩展的新版本需要它;我不知道。我没有花时间深入研究这些细节。
但是为了解决这个问题,我只需执行以下操作:
sudo apt-get install libatomic1

安装缺失的共享库。

然后,我删除了$HOME/.vscode-server

rm -rf $HOME/.vscode-server

尝试使用VSCode重新连接,成功了!

希望这能帮助像我一样,其他所有选项都失败了的人。


4

问题:尝试使用VSCode连接到Linux(远程机器)时出现问题。

解决方案删除.vscode-server中的bin文件夹,然后重新连接到远程机器

在远程服务器中:

remote_name:~$ rm -rf ~/.vscode-server/bin

*reconnect to remote machine* 

3
添加@cagriyonca所提到的内容,删除位于Windows中的文件中的IP:
C:\Users\<YourUsername>\.ssh\known_hosts

这对我有用


谢谢您!我因为无法连接到之前已连接的主机而苦恼了几个小时。 - Binar Web
在提示输入ssh密钥(或密码)之前,我遇到了以下错误。删除known_hosts文件就可以解决问题。 "getsockname失败:坏的文件描述符" "收到一些输出,清除连接超时" "channel_send_open: channel 2: 预期外的内部错误" "进程尝试写入不存在的管道" - Mike

2

原来我的成为了vscode服务器的障碍。

然后我尝试了

chsh -s /bin/bash

并且能够正常工作。


谢谢您,先生 <3 看来那也是我的问题! - Ari Seyhun
有没有一种方法可以将ssh与fish作为默认shell一起使用? - Gilad

1
我遇到了完全相同的问题。似乎什么都不起作用(卸载扩展,卸载VSCode,删除一堆缓存文件等等)。通过终端进行SSH是可以的,但在VSCode上却不行。
在终端上工作了一段时间后,我收到了一个没有空间的错误,所以在服务器上删除了一堆文件,这对我来说是解决方案,与VSCode无关。

1
今天遇到了这种情况。将我的Remote-SSH扩展切换到预发布版本解决了问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接