背景
VS code
在安装remote ssh
插件之后就可以远程ssh访问Linux服务器,可以方便的对文件内容进行增删改查移动复制等操作。
问题
有时候我们直接通过ssh
可以连接到服务器,但是通过VS code
进行远程ssh访问会失败,提示信息为Could not establish connection to : 192.168.10.233 XHR failed
。重试之后仍然如此,删除本地known_hosts
文件也没有效果。工具栏help
- check for updates
确认已是最新版。
分析
注意到每次输入密码后VS code
的output
的日志信息中除了Resolver error: Error: XHR failedscode
外,还会出现一个关键词wget
,经查阅这是一种网络下载工作,所以怀疑是Linux服务器本身没有办法去访问特定网络导致的。(比如有的机器只能内网访问,就无法成功联网下载任何互联网文件)
查阅官方文档What are the connectivity requirements for the VS Code Server when it is running on a remote machine / VM?可知,Linux服务器需要支持访问互联网。
所以这可能就是通过VS code
进行远程ssh访问会失败的原因,修改Linux服务器的网络访问权限风险较高涉及跨部门沟通以及合规等问题,是否有手动解决的方案?
解决方案
查阅相关资料并验证有效,手动执行如下步骤即可解决。
1 VS code
的工具栏 help-about
找到commit
那一条,我的是af28b32d7e553898b2a91af498b1fb666fdebe0c
2 Linux服务器通过指令 cd ~/.vscode-server/bin
跳转到本地commits路径。指令ll
可以看到有af28b32d7e553898b2a91af498b1fb666fdebe0c
存在。但是其空间占用为0
3 在可以访问互联网的机器上(windows和mac也可以),访问https://update.code.visualstudio.com/commit:af28b32d7e553898b2a91af498b1fb666fdebe0c/server-linux-x64/stable下载我们所需的文件。也可以访问https://vscode.cdn.azure.cn/stable/af28b32d7e553898b2a91af498b1fb666fdebe0c/vscode-server-linux-x64.tar.gz下载,不过这个链接可能拿不到最新的版本。
4 将上述文件丢到Linux的~/.vscode-server/bin/af28b32d7e553898b2a91af498b1fb666fdebe0c
目录下,并在该目录下执行chmod -R 777 *
,以及tar zxvf vscode-server-linux-x64.tar.gz
和mv vscode-server-linux-x64/* .
5 删除Windows本地的known_hosts
文件中该Linux服务器对应记录即可访问成功。
结论
Windows通过remote ssh远程访问Linux服务器时出现XHR failed
并且需要重复输入密码的情况,大概率是Linux服务器访问不了互联网环境下载特定包失败。此时只要在可访问机器上下载后手动完成文件加载即可。