vscode突然无法远程连接远程服务器

如题,有一天vscode突然无法远程连接服务器(linux环境)了,试过网上的方法,删除.vscode-server,再重新连接还是没有起效。

看了一下我重新连接之后.vscode-server 也没有出现别的教程里提到的bin文件夹,只有cli文件夹,远程服务器也没有图形界面,不知道咋办,所以就想着那就看看cli文件下那个log文件有没有说是什么问题。

这个log文件中记录了

[2024-12-30 12:54:01] error This machine does not meet Visual Studio Code Server's prerequisites, expected either... - validate GLIBCXX version for GNU environments, but could not: No such file or directory (os error 2) - find /lib/ld-musl-x86_64.so.1, which is required to run the Visual Studio Code Server in musl environments

GPT说是因为

  • 缺少 GLIBCXX 版本支持(与 GNU 环境相关)。
  • 缺少 /lib/ld-musl-x86_64.so.1(musl 环境中的必要库)
下面是解决步骤
1. 检查当前系统的 GLIBC 版本

运行以下命令检查当前安装的 GLIBC 版本:

ldd --version

输出如下正在使用 GLIBC 2.31,这是一个相对较新的版本,应该满足 Visual Studio Code Server 的最低要求。因此,GLIBC 并不是问题的原因。

2.验证 libstdc++ 是否完整

尽管 GLIBC 是正常的,但 libstdc++(标准 C++ 库)可能缺失或版本过低。

运行以下命令检查系统中是否安装了 libstdc++6

strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX

输出

说明系统提示缺少 /usr/lib/x86_64-linux-gnu/libstdc++.so.6 文件。这是标准 C++ 库的共享对象文件,许多软件,包括 Visual Studio Code Server,都依赖它运行。

3.检查系统是否安装了 libstdc++6

dpkg -l | grep libstdc++6

有输出

libstdc++6 已正确安装在系统中,并且版本是 13.1.0-8ubuntu1~20.04.2,这是较新的版本。然而,之前的错误显示找不到 /usr/lib/x86_64-linux-gnu/libstdc++.so.6,这可能是由于路径问题或链接缺失。

4.验证 libstdc++.so.6 文件路径

运行以下命令,查找 libstdc++.so.6 文件:

sudo find / -name "libstdc++.so.6"

输出了很多包含了libstdc++.so.6 文件的路径。

find 的结果看,路径 /usr/lib/x86_64-linux-gnu/libstdc++.so.6 是存在的。你需要确认这个文件是否可以正确使用。

5. 确认正确的 libstdc++.so.6 文件

strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX

输出

说明 /usr/lib/x86_64-linux-gnu/libstdc++.so.6 是无效文件或错误链接,需要重新创建链接。

6.找到正确的 libstdc++.so.6 文件

根据之前的 第4步中find 命令输出,多个路径下存在 libstdc++.so.6 文件。现在需要确认哪个文件是正确且支持的。我选择了红框中的这个。

strings /home/jx-vmlab/anaconda3/pkgs/libstdcxx-ng-11.2.0-h1234567_1/lib/libstdc++.so.6 | grep GLIBCXX

然后输出了一大堆

从截图中可以看到,/home/jx-vmlab/anaconda3/pkgs/libstdcxx-ng-11.2.0.../lib/libstdc++.so.6 文件支持许多版本的 GLIBCXX,包括 GLIBCXX_3.4.28,这表明这是一个有效且兼容的 libstdc++.so.6 文件。

我们现在可以使用这个文件修复系统的 libstdc++.so.6 问题。

7.修复系统的 libstdc++.so.6 问题

7.1 删除无效的 /usr/lib/x86_64-linux-gnu/libstdc++.so.6

执行以下命令,删除系统中无效的文件或符号链接:

sudo rm -f /usr/lib/x86_64-linux-gnu/libstdc++.so.6
7.2 创建新的符号链接

使用这个有效的 libstdc++.so.6 文件,创建一个新的符号链接:

sudo ln -s /home/jx-vmlab/anaconda3/pkgs/libstdcxx-ng-11.2.0-h1234567_1/lib
7.3 验证链接是否正确

运行以下命令,确认符号链接已正确创建:

ls -l /usr/lib/x86_64-linux-gnu/libstdc++.so.6

输出应该类似于

/usr/lib/x86_64-linux-gnu/libstdc++.so.6 -> /home/jx-vmlab/anaconda3/pkgs/libst

7.4 更新动态链接库缓存

更新系统的动态链接库缓存,让系统加载新的库文件:

sudo ldconfig

这两步我的输出是

显示了一些 CUDA 库(例如 libcudnn_ops_infer.so.8)的警告,提示它们 "不是符号链接"。这些警告与当前修复 libstdc++.so.6 的问题无直接关系,但可能会影响某些使用 CUDA 的程序。没管这些警告

8.验证版本支持

strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX

确保输出包含至少 GLIBCXX_3.4.22GLIBCXX_3.4.28

我输出了这些

可以看到 /usr/lib/x86_64-linux-gnu/libstdc++.so.6 文件已支持最新的 GLIBCXX 版本,包括 GLIBCXX_3.4.22GLIBCXX_3.4.28 等。

这表明 libstdc++6 的修复已经成功!

实际上我不清楚是不是到这里就解决问题了,因为我的小伙伴在另一台电脑上用vscode远程连接的时候没有进行下面的操作也能够连接成功了。

接下来gpt的建议是用下面这个代码,来验证Visual Studio Code Server 是否正常运行,但是实际上后面的一顿操作我也没有把server.sh给搞出来,也就是我是没有得到这个文件的,在这种情况下,直接用本地的vscode也能进行远程连接了。

~/.vscode-server/bin/<commit_id>/server.sh

这里的commit_id是这样获取的

打开本地的vscode,点击菜单栏的 帮助 → 关于,就会得到

红框中就是你的commit_id

因为这回我还是没有bin文件夹,所以我就接着往下做了。

.vscode-server 文件夹中缺少 bin 目录,这说明当前没有完整安装 Visual Studio Code Server,或者 VS Code 的远程连接未能正确完成安装。

于是手动下载 VS Code Server

下载 VS Code Server压缩包

根据你的服务器架构(通常是 x86_64),到以下网址下载对应的版本:

  • 官方下载地址(替换 commit:之后的commit_id 为你的commit_id):
  • wget https://update.code.visualstudio.com/commit:f1a4fb101478ce6ec82fe9627c43efbf9e98c813/server-linux-x64/stable -O vscode-server.tar.gz
    

② 解压

解压文件到 .vscode-server/bin 下的对应目录:

mkdir -p ~/.vscode-server/bin/f1a4fb101478ce6ec82fe9627c43efbf9e98c813

tar -xzf vscode-server.tar.gz -C ~/.vscode-server/bin/f1a4fb101478ce6ec82fe9627c43efbf9e98c813 --strip-components=1

③ 检查解压后的内容

ls -l ~/.vscode-server/bin/f1a4fb101478ce6ec82fe9627c43efbf9e98c813

输出应该包含 server.sh 和其他文件,例如:

server.sh
node
bin/
lib/
extensions/

然后用命令启动VS Code Server

~/.vscode-server/bin/f1a4fb101478ce6ec82fe9627c43efbf9e98c813/server.sh
 

这两步是gpt的说法,我一直没有server.sh文件,尝试无果,然后看了一下其他能够正常连接的服务器也没有这个文件,所以尝试用vscode直接连接远程服务器,发现能够连接得上。

下面是我解压得到的.vscode-server/bin/(commit_id文件名)目录下的文件目录。


 终于重新连上服务器了,撒花*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。

但其中有些步骤我不是那么明白为什么,知道的小伙伴可以给我些指导😀

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值