前言
最近在使用vscode通过Remote-SSH插件连接Linux时报Error: XHR failed错误,看输出的操作记录,应该是vscode-server下载由于不是https而失败了,折腾了半个小时,终于解决了,记录在这里供参考。
报错信息
报错1:Could not establish connection to : XHR failed.
报错2:卡在Setting up SSH Host XXX:Copying VS Code Server to host with scp
个人认为这两种报错其实是一种问题,都是服务器端的vscode-server下载受到限制(例如服务器网络不能fq,非常常见),可以采取离线下载server而后上传到服务器指定位置的方法
具体报错信息如下:
[18:37:53.588] > Acquiring lock on /home/ferris/.vscode-server/bin/6c3e3dba23e8fadc360aed75ce363ba
> 185c49794/vscode-remote-lock.ferris.6c3e3dba23e8fadc360aed75ce363ba185c49794
[18:37:53.619] > Installing to /home/ferris/.vscode-server/bin/6c3e3dba23e8fadc360aed75ce363ba185c
> 49794...
> 9d38e514b207%%1%%
[18:37:53.634] > Downloading with wget
[18:37:53.905] > wget download failed
> 错误: 没有匹配的证书主体别名 (Subject Alternative Name)。 请求的主机名为 “vscode
> .cdn.azure.cn”。 要以不安全的方式连接至 vscode.cdn.azure.cn,使用“--no-check-cer
> tificate”。
> printenv:
> SHELL=/bin/bash
> LANGUAGE=zh_CN:zh
> PWD=/home/ferris/.vscode-server/bin/6c3e3dba23e8fadc360aed75ce363ba185c49794
> LOGNAME=ferris
> XDG_SESSION_TYPE=tty
> MOTD_SHOWN=pam
> HOME=/home/ferris
> LANG=zh_CN.UTF-8
> VSCODE_AGENT_FOLDER=/home/ferris/.vscode-server
> SSH_CONNECTION=192.168.1.3 41872 192.168.1.97 22
> XDG_SESSION_CLASS=user
> USER=ferris
> SHLVL=0
> XDG_SESSION_ID=21
> XDG_RUNTIME_DIR=/run/user/1000
> SSH_CLIENT=192.168.1.3 41872 22
> PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
> :/usr/local/games:/snap/bin
> DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
> OLDPWD=/home/ferris
> _=/usr/bin/printenv
> Trigger local server download
[18:37:53.913] >
> 9d38e514b207:trigger_server_download
> platform==linux==
> vscodeArch==x64==
> destFolder==/home/ferris/.vscode-server/bin/==
> destFolder2==6c3e3dba23e8fadc360aed75ce363ba185c49794==
> 9d38e514b207:trigger_server_download_end
> Waiting for client to transfer server archive...
> Waiting for /home/ferris/.vscode-server/bin/6c3e3dba23e8fadc360aed75ce363ba185c49
> 794/vscode-scp-done.flag and vscode-server.tar.gz to exist
[18:37:53.914] Got request to download on client for {"platform":"linux","arch":"x64","destFolder":"/home/ferris/.vscode-server/bin/6c3e3dba23e8fadc360aed75ce363ba185c49794"}
[18:37:53.914] Downloading VS Code server locally...
[18:37:53.929] >
>
[18:37:54.700] Resolver error: Error: XHR failed
at y.onerror (vscode-file://vscode-app/c:/Program%20Files/Microsoft%20VS%20Code/resources/app/out/vs/workbench/workbench.desktop.main.js:77:1261)
[18:37:54.714] ------
解决方案
Step1:查看vscode当前版本的commit id,在vscode->关于中可以看到,如下图:
我这里是:6c3e3dba23e8fadc360aed75ce363ba185c49794
其中提交项目即为commit id,或者登陆到服务器$HOME文件夹中,ls -a查看隐藏目录$HOME/.vscode-server/bin下的文件夹名称
Step2:在该链接下手动下载server的压缩包vscode-server-linux-x64.tar.gz
https://update.code.visualstudio.com/commit:${COMMIT_ID}/server-linux-x64/stable
注意将${COMMIT_ID}替换为你的具体的提交序列号
Step3:上传该压缩包到服务器$HOME/.vscode-server/bin
Step4:解压,并更改解压文件夹名字
cd ~/.vscode-server/bin
tar -zxf vscode-server-linux-x64.tar.gz
mv vscode-server-linux-x64 ${COMMIT_ID}
注意将${COMMIT_ID}替换为具体的提交序列号,然后尝试重新连接,即可解决问题。
评论区