在只允许入站 SSH 连接的目标机器上使用 VSCode 中的 "Remote SSH"
Using "Remote SSH" in VSCode on a target machine that only allows inbound SSH connections
有没有办法使用 VSCode 远程 SSH 扩展与不允许出站互联网连接的远程主机进行交互?
是否可以从另一个系统下载 vscode-server 文件并复制到主机?
我阅读了 this 但我无法将服务器连接到互联网。
当您连接到主机时,它会执行一个 bash 脚本,该脚本会生成或卷曲一个 tarball 并将其解压缩到您的主目录中的一个目录中。这是一个离线解决方法。
尝试连接,让它失败
在服务器上,获取提交 ID
$ ls ~/.vscode-server/bin
553cfb2c2205db5f15f3ee8395bbd5cf066d357d
下载 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
将压缩包移动到 ~/.vscode-server/bin/$COMMIT_ID/vscode-server-linux-x64.tar.gz
在此目录中解压 tarball
$ cd ~/.vscode-server/bin/$COMMIT_ID
$ tar -xvzf vscode-server-linux-x64.tar.gz --strip-components 1
重新连接
您仍然需要手动安装任何扩展。市场上所有扩展的旁边都有一个下载按钮。获得 .vsix 文件后,您可以使用扩展管理器中的 从 VSIX 安装 选项通过 GUI 安装它们。
这有点痛苦,希望他们能改进这个过程,但如果你有一个 network-based 主目录,你只需要做一次。
我做了以下工作:
桌面 ~/.ssh/config
...
Host *
RemoteForward 54321
...
远程:~/bin/wget
其中 ~/bin
通过 .bashrc
添加到 PATH
#!/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 功能,而不会弄乱我的个人资料之外的任何东西来让它工作(例如:不需要根......即使我有它)。
正在添加一项新功能以支持离线安装
However, you can now solve this issue by a new user setting in the Remote - SSH extension. If you enable the setting remote.SSH.allowLocalServerDownload, the extension will install the VS Code Server on the client first and then copy it over to the server via SCP.
Note: This is currently an experimental feature but will be turned on by default in the next release
https://code.visualstudio.com/blogs/2019/10/03/remote-ssh-tips-and-tricks
打开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
VS Code 当前版本:1.48.2
我只是在服务器端杀掉wget进程,让客户端下载压缩包传到服务器端。这很容易,如下所示。
- 确保您在 settings.json
中设置
"remote.SSH.allowLocalServerDownload": true,
- 执行下面的 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
有没有办法使用 VSCode 远程 SSH 扩展与不允许出站互联网连接的远程主机进行交互?
是否可以从另一个系统下载 vscode-server 文件并复制到主机?
我阅读了 this 但我无法将服务器连接到互联网。
当您连接到主机时,它会执行一个 bash 脚本,该脚本会生成或卷曲一个 tarball 并将其解压缩到您的主目录中的一个目录中。这是一个离线解决方法。
尝试连接,让它失败
在服务器上,获取提交 ID
$ ls ~/.vscode-server/bin 553cfb2c2205db5f15f3ee8395bbd5cf066d357d
下载 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
将压缩包移动到 ~/.vscode-server/bin/$COMMIT_ID/vscode-server-linux-x64.tar.gz
在此目录中解压 tarball
$ cd ~/.vscode-server/bin/$COMMIT_ID $ tar -xvzf vscode-server-linux-x64.tar.gz --strip-components 1
重新连接
您仍然需要手动安装任何扩展。市场上所有扩展的旁边都有一个下载按钮。获得 .vsix 文件后,您可以使用扩展管理器中的 从 VSIX 安装 选项通过 GUI 安装它们。
这有点痛苦,希望他们能改进这个过程,但如果你有一个 network-based 主目录,你只需要做一次。
我做了以下工作:
桌面 ~/.ssh/config
...
Host *
RemoteForward 54321
...
远程:~/bin/wget
其中 ~/bin
通过 .bashrc
PATH
#!/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 功能,而不会弄乱我的个人资料之外的任何东西来让它工作(例如:不需要根......即使我有它)。
正在添加一项新功能以支持离线安装
However, you can now solve this issue by a new user setting in the Remote - SSH extension. If you enable the setting remote.SSH.allowLocalServerDownload, the extension will install the VS Code Server on the client first and then copy it over to the server via SCP.
Note: This is currently an experimental feature but will be turned on by default in the next release
https://code.visualstudio.com/blogs/2019/10/03/remote-ssh-tips-and-tricks
打开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
VS Code 当前版本:1.48.2
我只是在服务器端杀掉wget进程,让客户端下载压缩包传到服务器端。这很容易,如下所示。
- 确保您在 settings.json 中设置
"remote.SSH.allowLocalServerDownload": true,
- 执行下面的 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