有没有办法使用 VSCode 远程 SSH 扩展与不允许出站互联网连接的远程主机进行交互?
是否可以从另一个系统下载 vscode 服务器文件并复制到主机?
我读了这篇文章,但我无法将服务器连接到互联网。
当您连接到主机时,它会执行一个 bash 脚本,该脚本会获取或卷曲压缩包并将其提取到主目录的目录中。下面是一个脱机解决方法。
-
尝试连接,让它失败
-
在服务器上,获取提交 ID
$ ls ~/.vscode-server/bin 553cfb2c2205db5f15f3ee8395bbd5cf066d357d
-
下载压缩包,将 $COMMIT_ID 替换为上一步中的提交编号
对于稳定版本
https://update.code.visualstudio.com/commit:$COMMIT_ID/server-linux-x64/stable
对于预览体验版
https://update.code.visualstudio.com/commit:$COMMIT_ID/server-linux-x64/insider
-
将压缩包移动到~/.vscode-server/bin/$COMMIT_ID/vscode-server-linux-x64.tar.gz
-
在此目录中提取压缩包
$ cd ~/.vscode-server/bin/$COMMIT_ID $ tar -xvzf vscode-server-linux-x64.tar.gz --strip-components 1
-
再次连接
您仍需要手动安装所有扩展。市场上所有扩展旁边都有一个下载按钮。拥有 .vsix 文件后,可以使用扩展管理器中的">从 VSIX安装"选项通过 GUI 安装它们。
这有点痛苦,希望他们能改进这个过程,但是如果你有一个基于网络的主目录,你只需要这样做一次。
open vscode -> about
Version: 1.46.1
Commit: cd9ea6488829f560dc949a8b2fb789f3cdc05f5d
Date: 2020-06-17T21:17:14.222Z
Electron: 7.3.1
Chrome: 78.0.3904.130
Node.js: 12.8.1
V8: 7.8.279.23-electron.0
OS: Darwin x64 17.7.0
$COMMIT_ID = cd9ea6488829f560dc949a8b2fb789f3cdc05f5d
添加了新功能以支持脱机安装
但是,您现在可以通过远程 - SSH 扩展中的新用户设置来解决此问题。如果启用远程设置。SSH.allowLocalServerDownload,扩展将首先在客户端上安装 VS Code Server,然后通过 SCP 将其复制到服务器。
注意:这目前是一项实验性功能,但在下一版本中将默认启用
https://code.visualstudio.com/blogs/2019/10/03/remote-ssh-tips-and-tricks
VS 代码的当前版本:1.48.2
我只是在服务器端杀死wget进程,让客户端下载存档并将其传输到服务器端。这很简单,如下所示。
- 确保在设置中设置.json
"remote.SSH.allowLocalServerDownload": true,
- 执行下面的外壳程序。
# to find the <pid>
ps aux | grep wget | grep vscode-server
# kill the process
kill -9 <pid>
# then wait for the client downloading and transferring
# optional: If you want to know the progress, just
cd ~/.vscode-server/bin/<commit-id>/
watch -n 1 -d ls -rthl
一个解决方法 我已经做了以下工作:
桌面~/.ssh/config
...
Host *
RemoteForward 54321
...
远程:通过 .bashrc 将~/bin
添加到PATH
的~/bin/wget
#!/bin/bash
export LD_LIBRARY_PATH=$HOME/opt/lib/tsocks/
export TSOCKS_CONF_FILE=$HOME/opt/tsocks/tsocks.conf
$HOME/bin/tsocks /usr/bin/wget $@
远程:~/opt/tsocks/tsocks.conf
server = 127.0.0.1
server_port = 54321
server_type = 5
注意tsocks
二进制文件已被SCP化~/bin/tsocks
并且~/opt/tsocks/
已使用通常存储在/usr/lib64/libtsocks.so
中的libtsocks.so
创建
这是一个解决方法,允许我拥有 wget 功能,而不会弄乱我的个人资料之外的任何内容以使其工作(例如:不需要 root ...即使我有)。