30

有没有办法使用 VSCode Remote SSH 扩展与不允许出站 Internet 连接的远程主机进行交互?

是否可以从另一个系统下载 vscode-server 文件并复制到主机?

我读了这个,但我无法将服务器连接到互联网。

4

5 回答 5

89

当您连接到主机时,它会执行一个 bash 脚本,该脚本会 wgets 或 curl 一个 tarball 并将其解压缩到您的主目录中的一个目录中。这是一个离线解决方法。

  1. 尝试连接,让它失败

  2. 在服务器上,获取提交 ID

    $ ls ~/.vscode-server/bin
    553cfb2c2205db5f15f3ee8395bbd5cf066d357d
    
  3. 下载 tarball,将 $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

  1. 将压缩包移动到~/.vscode-server/bin/$COMMIT_ID/vscode-server-linux-x64.tar.gz

  2. 在此目录中提取 tarball

    $ cd ~/.vscode-server/bin/$COMMIT_ID
    $ tar -xvzf vscode-server-linux-x64.tar.gz --strip-components 1
    
  3. 重新连接

您仍然需要手动安装任何扩展。市场上所有扩展程序旁边都有一个下载按钮。获得 .vsix 文件后,您可以通过 GUI 使用扩展管理器中的从 VSIX 安装选项安装它们。

这有点痛苦,希望他们改进这个过程,但如果你有一个基于网络的主目录,你只需要这样做一次。

于 2019-06-26T21:27:12.830 回答
3

正在添加一项新功能以支持离线安装

但是,您现在可以通过 Remote - SSH 扩展中的新用户设置来解决此问题。如果启用设置 remote.SSH.allowLocalServerDownload,扩展程序将首先在客户端安装 VS Code Server,然后通过 SCP 将其复制到服务器。

注意:这目前是一个实验性功能,但将在下一个版本中默认开启

https://code.visualstudio.com/blogs/2019/10/03/remote-ssh-tips-and-tricks

于 2019-12-19T13:46:51.110 回答
3

打开 vscode -> 关于

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

于 2020-07-07T09:34:45.687 回答
0

我做了以下工作:

桌面~/.ssh/config

...

Host *
  RemoteForward 54321

...

远程:通过.bashrc添加到~/bin/wget其中~/binPATH

#!/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/已创建,libtsocks.so通常存储在/usr/lib64/libtsocks.so

这是一种解决方法,它允许我拥有 wget 功能,而不会弄乱我的个人资料之外的任何东西来让它工作(例如:不需要 root ......即使我有它)。

于 2019-08-12T18:15:11.347 回答
0

当前版本的 VS 代码:1.48.2

我只是干掉服务器端的wget进程,让客户端下载归档并传输到服务器端。这很容易,如下所示。

  1. 确保您在 settings.json 中设置
"remote.SSH.allowLocalServerDownload": true,
  1. 执行下面的 shell 脚本。
# 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
于 2020-08-26T12:48:34.553 回答