vsCode无法连接服务器问题解决及思考

背景

早上刚打开电脑,准备开始一天的工作。但是发现VSCode无法连接上我的虚拟机了,导致无法工作了,这让我十分头疼。最终花了将近一天的时间将问题解决,但是其中的过程走了不少弯路,浪费了不少时间,也进行了反思。我们作为开发人员,应该要用软件思维去理解这款产品,帮助我们去思考问题。

一直秉承着:授人以鱼不如授人以渔的准则。本文分享一下自己问题分析思路,包括走的弯路。希望对大家有所帮助。

问题现象

早上打开电脑,准备用vsCode连接远程开发服务器,进行代码开发。但是工具一直提示无法连接Could not establish connection to "x.x.x.x": The VS Code Server failed to start.。如下:

根据提示是 vsCode Server 启动失败了。在这里,我们要有一个概念:什么是vsCode Server?

我们是通过windows 环境中的Visual Studio Code工具,通过ssh 协议登录上远程服务器,再进行开发。这样简单的功能似乎并不需要所谓的vsCode Server,因为这是sshd服务的功能。在这里,我提出一个vsCode功能,如果由你去开发实现,你会怎么去做呢?

  • 如何实现扩展功能中的代码格式化

VS Code的一大特点是拥有丰富的扩展生态系统,其中有一个简单功能,就是格式化代码。我们分别从 ssh 协议 和 vscode 两种 方案分析,如下:

由时序图可知,两者的核心差异在于,文件格式化操作是在主机操作,还是在远程服务器操作。前者需要将格式化之后的文件信息再次上传到远程服务器中,而后者则不需要。节约了带宽和提高效率。

采用vsCode Server 的好处有很多,比如:

  1. 智能感知和代码完成:通过在服务器上运行,VSCode Server可以为远程项目提供智能感知、代码完成、代码片段、代码导航等高级编辑功能。
  2. 版本控制集成:它支持版本控制系统的集成,如Git,允许开发者直接在编辑器中进行代码的提交、拉取、推送等操作。
  3. 调试支持:VSCode Server支持远程调试,意味着开发者可以在本地机器上设置断点、单步执行等,而调试的目标程序运行在远程服务器上。
  4. 语言功能:支持各种编程语言的语法高亮、代码格式化、代码修复等特性。
  5. 扩展支持:VS Code的一大特点是拥有丰富的扩展生态系统,VSCode Server允许这些扩展在远程环境中运行,提供增强的开发体验。
  6. 文件同步和共享:它能够实现文件的快速同步,支持多人协作开发,提高了团队开发的效率。

附一张官网图:

那么如何解决The VS Code Server failed to start.的错误呢?通过百度查找,网友共给出了两种方案:

  1. 打开VS Code菜单"View"->“Command Palatte”->“Kill VS Code Server on Host”,选择出问题的远程服务器杀掉那个上面的VS Code server,然后重新尝试登陆

其实质是担心vsCode Server运行异常,希望通过杀死服务,再通过重启恢复。

  1. 尝试把服务器端的vscode-server删掉

即执行命令。其原理是怀疑vsCode server的版本或配置异常。删除,在下次登陆时,重新下载生成。

rm -rf ~/.vscode-server

很可惜,这两个方法并不能解决我的问题。并且当我删除 vsCode server后,出现了新的错误。Could not establish connection to "192.168.6.129": Failed to download VS CodeServer (XHR failed).。如下:

XHR failed错误表示资源下载失败。一般情况下是因为连接无法访问导致的,可能是域名无法访问导致的。解决方式有两个方向:

  1. 修改域名解析方式。比如设置代理或直接填充hosts配置。
  2. 手动下载vsCode server。

我采用的是第二种方式,操作流程为:

  1. 获取vsCode server 版本。

可通过查看[Help]–> [about]查看commitID

  1. 手动下载vsCode-Server。
//注:将commitID 替换,因为commitID表示版本,vsCode server 应该要与Client 版本一致,这样才能避免异常
wget https://vscode.download.prss.microsoft.com/dbazure/download/stable/${commitID}/vscode-server-linux-x64.tar.gz
  1. 安装vsCode server。

    1. 创建新的空目录~/.vscode-server/bin/${commitID}
    mkdir -p ~/.vscode-server/bin/05047486b6df5eb8d44b2ecd70ea3bdf775fd937/
    rm ~/.vscode-server/bin/05047486b6df5eb8d44b2ecd70ea3bdf775fd937/* -rf
    
    1. vscode-server-linux-x64.tar.gz重命名,并创建下载完成标志文件。
     yihua@ubuntu:~/.vscode-server/bin/05047486b6df5eb8d44b2ecd70ea3bdf775fd937$ mv vscode-server-linux-x64.tar.gz vscode-server.tar.gzyihua@ubuntu:~/.vscode-server/bin/05047486b6df5eb8d44b2ecd70ea3bdf775fd937$ touch vscode-server.tar.gz.doneyihua@ubuntu:~/.vscode-server/bin/05047486b6df5eb8d44b2ecd70ea3bdf775fd937$
    
  2. 重新登录。

发现依然还是出现Waiting for server log...错误。

兜兜转转又回到了最初的起点,于是我知道之前完全按照网上的思路是有问题的。于是我静下心,决定看看vsCode的报错日志。可通过终端上的OUTPUT查看。如下:

很明显,这里提示一个warning和Error。

其中warning 表示GLIBC的版本应该要 >=2.28。因为是警告,我也没有在意。

其中error 表示vsCode Server缺少依赖,可参考https://aka.ms/vsccode-remote/faq/old-linux链接。这个链接似乎比较老了,我最终是通过这个链接查看到有用信息。https://code.visualstudio.com/docs/remote/faq

如图所示,最新版本的Remote Development对内核版本以及glibc、libstdc++都有版本要求。我的远程服务器信息如下:

因为远程服务器使用的镜像是ubuntu-18.04,因此内核版本以及库版本较低。接下来的思路则是提高服务器的内核以及glibc版本。在这里我直接花了一个多小时,将虚拟机镜像改为ubuntu-20.04。

最终,再通过Visual Studio Code 可直接登录,十分顺利。

完结撒花 ~~~

总结

虽然问题最终是通过更新虚拟机镜像版本得以解决。但是前面走了很多弯路。我的感受就是:遇到问题,我们的第一反映则是百度搜索,查看是否解决方法,然后按照他人的操作,执行一遍,看是否能解决。如果不行,继续百度,继续做尝试。

这样的方式,在大多数情况下,可能会很快的帮助我们解决问题。但是当你经历多次盲目的尝试,并且失败后。我们应该静下心来自己进行问题分析,可能会有意想不到的发现。

多思考,多发现。

若我的内容对您有所帮助,还请关注我的公众号。不定期分享干活,剖析案例,也可以一起讨论分享。
我的宗旨:
踩完您工作中的所有坑并分享给您,让你的工作无bug,人生尽是坦途

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/454298.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5 分钟让你了解什么是搜索引擎

文章目录 搜索引擎概述基于业务模式分类垂直搜索(垂搜)通用搜索(通搜)本地搜索引擎 基于技术实现分类基于关键词的搜索引擎(Keyword-based Search Engine)语义搜索引擎(Semantic Search Engine&…

双非本科准备秋招(17.1)—— 力扣二叉树

1、257. 二叉树的所有路径 要求返回根节点到叶子节点的所有路径,这里用前序遍历就好。 每次递归前,都让字符串s加上当前节点的值和“->”,然后判断是否为叶子节点,如果是的话,说明这条路径是一个答案,因…

【CSS】什么是BFC?BFC有什么作用?

【CSS】什么是BFC?BFC有什么作用? 一、BFC概念二、触发BFC三、BFC特性即应用场景1、解决margin塌陷的问题2、避免外边距margin重叠(margin合并)3、清除浮动4、阻止元素被浮动元素覆盖 一、BFC概念 BFC(block formatting context)…

2024第八届生物饲料高质量发展论坛会议通知

饲料工业发展空间大,产量持续增长,品质与质量也在不断提高,饲料工业是支撑现代畜牧水产养殖业发展的基础产业,是关系到城乡居民动物性食品供应的民生产业。“十四五”时期是我国由全面建设小康社会向基本实现社会主义现代化迈进的…

linux安装naocs

一.安装jdk 二.安装nacos 1.下载nacos Releases alibaba/nacos GitHub 2.上传到服务器 3.解压nacos tar -zxvf nacos-server-2.3.0.tar.gz 会生成一个nacos文件夹 4.启动nacos 进入nacos/bin目录 cd nacos/bin 启动 ./startup.sh -m standalone 5.访问 http://…

2023年06月CCF-GESP编程能力等级认证C++编程一级真题解析

一、单选题(每题2分,共30分) 第1题 以下不属于计算机输出设备的有( )。 A. 麦克风 B. 音箱 C. 打印机 D. 显示器 答案:A 第2题 ChatGPT是OpenAI研发的聊天机器人程序,它能通过理解和学习人…

全球住宅代理IP服务商哪家好?真实测评推荐列表

住宅IP代理为跨境出海用户提供了更加多元、安全和高效的网络访问体验。住宅代理服务使用真实的住宅IP地址,而这些IP地址通常最接近于海外个人家庭用户,从而减少了被封锁或标记为可疑流量的可能性,对于部分跨境电商平台账号(如亚马…

全网第一篇把Nacos配置中心服务端讲明白的

入口 getServerConfig对应:ConfigQueryRequestHandler�getBatchServiceConfig对应:ConfigChangeBatchListenResponse�admin对应:ConfigController 我们重点就要2个,一个是服务端如何完成客户端获取配置请…

IT行业证书的获取与价值:提升职业竞争力的关键

目录 IT行业证书的价值和作用 1. Cisco(思科)认证(如CCNA、CCNP、CCIE): 2. 微软认证(如MCSA、MCSE、MCSD): 3. 计算机网络技术(CompTIA Network、CompTIA Security&a…

Backtrader 文档学习- Observers

Backtrader 文档学习- Observers 1.概述 在backtrader中运行的策略主要处理数据源和指标。 数据源被加载到Cerebro实例中,并最终成为策略的一部分(解析和提供实例的属性),而指标则由策略本身声明和管理。 到目前为止&#xff0c…

rsync-3.1.2下载编译安装运行同步

下载 https://rsync.samba.org/ftp/rsync/src/ 解压 -解压源码包tar -xvf rsync-3.1.2.tar.gz -重命名mv rsync-3.1.2 rsync -将软件安装到指定目录下./configure --prefi/usr -编译 make - 安装 make install 安装之后启动脚本在/usr/bin/ -启动脚本 (启动之前需要配置一下…

SpringBoot注解--04--01--注解@Mapper在IDEA中自动注入警告的解决方案

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 问题原因 解决方案方法1:为 Autowired 注解设置required false方法2:用 Resource 替换 Autowired方法3:在Mapper接口上加上Repo…