云计算百科
云计算领域专业知识百科平台

如何解决vscode使用远程资源管理常见问题:远程主机可能不符合 glibc 和 libstdc++ VS Code 服务器的先决条件

在我们使用vscode的远程资源管理功能时,遇到如下问题

[LinuxPrereqs]: 远程主机可能不符合 glibc 和 libstdc++ VS Code 服务器的先决条件 (远程主机不满足运行VS Code服务器的先决条件)  这个问题怎么解决

这个报错通常是因为你的 VS Code 版本过新(通常是 1.99 或更高版本),而你连接的 远程 Linux 服务器系统版本较老(如 CentOS 7、Ubuntu 18.04 等),导致服务器上的核心库(glibc 或 libstdc++)版本过低,无法运行新版的 VS Code 服务端。

这是一个非常普遍的兼容性问题。以下是几种行之有效的解决方案,你可以根据自己的情况选择:

方案一:降级 VS Code(最简单、最推荐)

这是目前最快解决问题的方法,因为新版 VS Code(1.99+)强制要求 glibc >= 2.28,而旧系统很难安全升级 glibc。

  • 下载旧版本:
    访问 VS Code 官方下载页面或 GitHub Release 页面,下载 1.98.x 或 1.85.2 版本。

    • Windows 用户:推荐下载 .exe 安装包(User Installer)。
    • 直接下载链接示例(1.98.2):
      https://update.code.visualstudio.com/1.98.2/win32-x64-user/stable (如果是其他系统,请修改对应参数)
  • 安装覆盖:
    下载后安装,它会自动覆盖你当前的新版本。
  • 关闭自动更新(关键):
    安装完成后,务必关闭自动更新,否则过两天又会自动升到 1.99 导致再次报错。

    • 打开 VS Code,进入 设置 (Settings)。
    • 搜索 update。
    • 将 Update: Mode 设置为 none 或 manual。
    • 将 Extensions: Auto Update 设置为 false。
  • 方案二:修改 VS Code 远程连接设置(无需降级)

    如果你必须使用新版 VS Code,可以尝试强制它使用“静态链接”的服务器版本,这可以绕过 glibc 的版本限制。

  • 在本地 VS Code 中按下 Ctrl + Shift + P 打开命令面板。
  • 输入并搜索 Remote-SSH: Settings。
  • 找到 Remote.SSH: Server Install Path 设置项。
  • 将其修改为一个特定的路径,例如 ~/.vscode-server-static。
  • 重启 VS Code 并重新尝试连接。这会指示 VS Code 下载一个静态编译的服务器版本,对系统库的依赖更少。
  •  方案三:升级远程服务器库(风险较高,不推荐)

    如果你有服务器管理员权限,并且服务器环境允许破坏性更新,可以尝试升级系统库。

    • Ubuntu/Debian:

      sudo apt update
      sudo apt upgrade libc6 libstdc++6

    • CentOS/RHEL:

      sudo yum update glibc libstdc++

    警告:glibc 是 Linux 系统最核心的库,强烈不建议在生产环境或重要服务器上直接升级它。升级失败或版本不兼容极大概率会导致系统崩溃、命令无法使用(连 ls, cd 都报错),甚至无法远程连接。

    如何确认问题原因?

    你可以登录到远程服务器,运行以下命令查看当前库版本,确认是否低于要求:

  • 检查 glibc 版本:

    ldd –version
    VS Code 1.99+ 要求版本 >= 2.28。如果显示 2.17 (CentOS 7) 或 2.27 (Ubuntu 18.04),则不满足要求。

  • 检查 libstdc++ 版本:

    strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX | tail -n
    通常要求 GLIBCXX_3.4.21 或更高。

  • 大概率遇到另一个问题

    使用方案一,降级vscode后,大概率会遇到下面这个问题:

    Unable to negotiate with ip port port: no matching MAC found. Their offer: hmac-sha1

    这个问题的核心原因是 SSH 客户端(VS Code 使用的 OpenSSH)与服务器端在“消息认证码(MAC)”算法上无法达成一致。具体来说,我们的服务器(或虚拟机)只提供了较旧且安全性较低的 hmac-sha1 算法,而现代版本的 OpenSSH 客户端默认出于安全考虑禁用了该算法,导致双方“无法沟通”,从而报错 no matching MAC found。最简单的解决方法就是修改本地 SSH 配置(最推荐,无需服务器权限),步骤如下:

  • 打开 VS Code。
  • 按下 Ctrl + Shift + P 打开命令面板。
  • 输入并选择命令:Remote-SSH: Open Configuration File。
  • 选择你要编辑的配置文件(通常是 C:\\Users\\你的用户名\\.ssh\\config)。
  • 找到你连接这台服务器(ip)的配置段。
  • 在该配置段中,MACs +hmac-sha1。
  • 总结建议

    • 如果你是普通开发者,连接的是公司旧服务器或学校的机房:请使用方案一(降级到 1.98 并关闭自动更新),这是最稳妥的。
    • 如果你是运维人员,且服务器环境较新但配置有误:可以尝试 方案二。
    • 除非万不得已,不要尝试方案三升级 glibc。
    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 如何解决vscode使用远程资源管理常见问题:远程主机可能不符合 glibc 和 libstdc++ VS Code 服务器的先决条件
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!