记一次VSCode远程连接失败的解决过程:从报错到搞定的全过程

最近用VSCode远程连接服务器写代码时,突然就连不上了。点击连接后,进度条卡半天,最后弹出个模糊的错误提示,试了好几次都这样。作为每天都要靠远程开发干活的人,这可太影响效率了。琢磨了大半天总算搞定,把过程记下来,万一你也遇到类似问题,或许能少走点弯路。

一、先说说遇到的问题

具体症状就是:VSCode里点"远程连接",输入密码后没反应,过一会儿提示"连接超时";有时候又会显示"正在安装VSCode Server",但进度一直不动,最后直接断开。

一开始以为是网络问题,试了ping服务器,能通;用终端直接ssh连接,输密码能登上。这说明服务器和网络都没问题,问题大概率出在VSCode本身。

二、第一次尝试:删服务器的配置文件

网上资料说VSCode远程连接靠的是服务器上的.vscode-server文件夹,里面存着匹配的服务端程序。说不定是这个文件夹出了问题,那就试试删掉重来吧。

步骤很简单:

  1. 用终端ssh登录服务器(这时候还能登上)
  2. 执行删除命令:
bash 复制代码
rm -rf ~/.vscode-server
  1. 关掉VSCode重新连接

本以为这样就能让VSCode重新自动安装服务端,结果还是不行。连接时依旧卡在安装步骤,看来问题没这么简单。

三、第二次尝试:手动安装匹配的服务端

既然自动安装失败,那就手动来。后来才知道,VSCode客户端和服务端必须版本匹配,不然就会连接失败。这里的"版本"不是指1.103.0这种数字,而是一个叫"commit id"的哈希值(一串字母加数字的代码)。

具体操作分三步:

1. 找到本地VSCode的commit id

打开本地VSCode,按Ctrl+Shift+P调出命令面板,输入"Help: 关于"(或者英文"About"),会弹出一个窗口,里面有一行类似"版本: 1.103.0 (7f329fe6c66b0f86ae15753d2fb3a363b9c84a9)"的内容,括号里的那串字符就是我们要的commit id。

2. 登录服务器手动操作

用终端ssh登录服务器后,依次执行下面的命令(注意把命令里的你的commit id换成刚才找到的那串字符):

bash 复制代码
# 先确保旧的文件被删干净
rm -rf ~/.vscode-server

# 创建存放服务端程序的文件夹
mkdir -p ~/.vscode-server/bin/你的commit id

# 下载对应版本的服务端压缩包
wget https://update.code.visualstudio.com/commit:你的commit id/server-linux-x64/stable -O vscode-server.tar.gz

# 解压到刚才创建的文件夹
tar -zxf vscode-server.tar.gz -C ~/.vscode-server/bin/你的commit id --strip-components 1

执行完这些,关掉终端,重新用VSCode连接,本以为这次能成,结果又卡住了------原来服务器网络有限制,wget命令根本下载不了压缩包。

四、终极解决:本地下载后上传服务器

既然服务器下不了,那就换个思路:在本地电脑下载好压缩包,再传到服务器上。

1. 本地下载服务端压缩包

在本地浏览器里输入链接:https://update.code.visualstudio.com/commit:你的commit id/server-linux-x64/stable(同样把你的commit id换成实际的哈希值),浏览器会自动下载一个压缩包(可能叫stable,可以重命名为vscode-server.tar.gz方便操作)。

2. 把压缩包传到服务器

scp命令上传(在本地终端执行,把你的用户名服务器IP本地文件路径换成实际信息):

ruby 复制代码
scp /本地文件路径/vscode-server.tar.gz 你的用户名@服务器IP:~/

这时候会提示输入服务器密码,输完后等待上传完成。

3. 服务器上完成安装

再次用ssh登录服务器,执行下面的命令(还是要替换你的commit id):

bash 复制代码
# 确保文件夹已创建
mkdir -p ~/.vscode-server/bin/你的commit id

# 把上传的压缩包解压到目标文件夹
tar -zxf ~/vscode-server.tar.gz -C ~/.vscode-server/bin/你的commit id --strip-components 1

五、终于搞定了

做完这一切,重新打开VSCode,点击远程连接,这次没再卡壳,几秒钟就连接成功了。看来问题的根源就是VSCode客户端和服务端版本不匹配,加上服务器网络限制导致自动安装失败,手动匹配版本后就好了。

如果以后再遇到类似问题,应该会先检查版本是否匹配,再一步步排查网络和文件权限的问题。希望这个过程能帮到同样遇到困扰的朋友。

相关推荐
简小瑞3 天前
VSCode 源码解密:一个"无用"属性背后的精妙设计
typescript·visual studio code
星光不问赶路人4 天前
project references在tsserver内工作流程
typescript·visual studio code
珊瑚礁的猪猪侠11 天前
ADB使用指南
python·adb·visual studio code
瑶琴AI前端16 天前
【零成本高效编程】VS Code必装的5款免费AI插件,开发效率飙升!
前端·ai编程·visual studio code
LIUENG18 天前
快速开发一个 VSCode 插件
前端·visual studio code
996终结者24 天前
同类软件对比(四):Jupyter vs PyCharm vs VS Code:Python开发工具终极选择指南
vscode·python·jupyter·pycharm·visual studio code
BD1 个月前
I18n Fast:一个彻底解决了国际化项目痛点的 VSCode 插件
visual studio code
moshuying1 个月前
🚀 从零到一:打造你的VSCode圈复杂度分析插件
visual studio code·cursor
Zayn1 个月前
前端路径别名跳转和提示失效?一文搞懂解决方案
前端·javascript·visual studio code
花载酒1 个月前
10个我离不开的 VSCode 插件
前端·visual studio code