Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using "Remote SSH" in VSCode on a target machine that only allows inbound SSH connections

Is there a way to use the VSCode Remote SSH extension to interact with a remote host that does not allow outbound internet connections?

Is it possible to download the vscode-server files from another system and copy to host?

I read this but I can't connect the server to internet.

like image 451
Fakhamatia Avatar asked Jun 22 '19 19:06

Fakhamatia


People also ask

How does VS Code remote SSH work?

The Visual Studio Code Remote - SSH extension allows you to open a remote folder on any remote machine, virtual machine, or container with a running SSH server and take full advantage of VS Code's feature set. Once connected to a server, you can interact with files and folders anywhere on the remote filesystem.

Can you SSH from VS Code?

VS Code Remote SSH SSH, or the secure shell protocol, lets you access a remote computer or virtual machine securely over a network connection. You can connect over SSH into another machine from Visual Studio Code and interact with files and folders anywhere on that remote filesystem.


1 Answers

When you connect to a host it executes a bash script that wgets or curls a tarball and extracts it in a directory in your home directory. Here's an offline workaround.

  1. Attempt to connect, let it fail

  2. On server, get the commit id

    $ ls ~/.vscode-server/bin 553cfb2c2205db5f15f3ee8395bbd5cf066d357d 
  3. Download tarball replacing $COMMIT_ID with the the commit number from the previous step

For Stable Version

https://update.code.visualstudio.com/commit:$COMMIT_ID/server-linux-x64/stable

For Insider Version

https://update.code.visualstudio.com/commit:$COMMIT_ID/server-linux-x64/insider

  1. Move tarball to ~/.vscode-server/bin/$COMMIT_ID/vscode-server-linux-x64.tar.gz

  2. Extract tarball in this directory

    $ cd ~/.vscode-server/bin/$COMMIT_ID $ tar -xvzf vscode-server-linux-x64.tar.gz --strip-components 1 
  3. Connect again

You'll still need to install any extensions manually. There's a download button next to all the extensions in the marketplace. Once you have the .vsix file you can install them through the GUI with the Install from VSIX option in the extensions manager.

This is kind of a pain and hopefully they improve this process, but if you have a network-based home directory, you only have to do this once.

like image 70
aviso Avatar answered Sep 16 '22 13:09

aviso