VS Code on Biowulf

Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications. It might be a good idea to install "Remote Development" extension pack which allows you to open any folder in a container, on a remote machine, or in the Windows Subsystem for Linux (WSL) and take advantage of VS Code's full feature set. It includes 'Remote SSH', 'Remote Containers' and 'Remote WSL' extensions.


VS Code ( vscode ) should ONLY be run from computational nodes. Do not run VS Code on Biowulf or Helix. Please follow instructions on this page to run on compute node. Please contact staff@hpc.nih.gov if you run into issues while following the below steps.


Note

Documentation

This application can be utilized interactively via the HPC OnDemand web interface.

Accessing VS Code via Open OnDemand

We recommend using HPC OnDemand to access Visual Studio Code. This uses Open OnDemand to provide a convenient interface to launch and access VS Code sessions in interactive jobs without requiring complex SSH tunneling and configuration.

This method provides the same interface as a native installation of VS Code inside a browser window. Rather than using the Remote SSH extension to connect to a remote host, VS Code is running natively on a compute node in a Slurm job with the interface presented to you via web browser using secure Open OnDemand proxies. The first time you connect to VSCode, you will need to configure any VSCode extensions you wish to use. On subsequent VSCode sessions, your extensions will automatically load from your home directory on Biowulf.

To access VS Code via Open OnDemand, you navigate to the VS Code application page, configure the resources your job requires, and launch your job.

Screenshot of the VS Code application submission form

For more information about Biowulf's Open OnDemand installation, access, and other services available please see our documentation.

Windows: Run VS Code on a compute node

We encourage you to try using VS Code via Open OnDemand as it provides a much simpler and more stable connection to VS Code running on the Biowulf cluster and should support nearly all use cases that the remote SSH method supports.

  1. Generate an ssh keypair with this command in windows powershell:
    ssh-keygen -t rsa -b 4096. The key should be passphrase protected.

    Generate ssh keypair

  2. Copy the public key from your local computer to the authorized_keys file on Helix (replace xxx with your own user name):
    scp C:\Users\xxx\.ssh\id_rsa.pub xxx@helix.nih.gov:~/tmp.pub

    copy key

  3. Log in to Helix:
        helix $ mkdir -p ~/.ssh 
        helix $ chmod 0700 ~/.ssh
        helix $ cat tmp.pub >> ~/.ssh/authorized_keys
        helix $ rm tmp.pub
        helix $ chmod 0600 ~/.ssh/authorized_keys

  4. In an administrative powershell session(your institute IT department may need to be involved):
    Is ssh-agent enabled?: Get-Service ssh-agent | Select StartType
    If the StartType is Disabled, enable with: Get-Service -Name ssh-agent | Set-Service -StartupType Manual

    admin powershell session

    enable ssh-agent

  5. In an non-administrative powershell session:
    Run ssh-agent.exe
    Add your keys using ssh-add

    add ssh key

  6. In the 'search' box at the bottom left corner of windows desktop, type notepad C:\Users\xxx\.ssh\config and press enter. Replace xxx with your own user name.

    config .ssh file

  7. Add the following to this file (replace xxx with your own user name):
    Host cn*
    User xxx
    ProxyCommand C:\Windows\System32\OpenSSH\ssh.exe -o ForwardAgent=yes xxx@biowulf.nih.gov nc -w 120ms %h %p
    
    modify config file

  8. Save and close the file.

  9. Install the "Remote Development" VScode extension. In VS Code Remote-SSH extension add the following in the settings section to your "Remote.SSH: Config File" (replace XXX with your own user name): C:\Users\XXX\.ssh\config

    modify ssh setting

    config ssh setting

  10. Start an sinteractive session on Biowulf (using an alternate method such as putty or nomachine) and take note of the compute node number (cnXXXX).

    sinteractive session

  11. In VS Code, click the bottom left icon, select/type 'Remote-SSH: Connect to host'

    remote ssh connect to host

  12. In the box, replace "XXXX" with the actual compute node number obtained in step 10, then click on the node name (not press enter). Select 'linux', 'continue', then the node number should appear at the bottom left.

    interactive node number

    linux

    continue

    continue

  13. You should now be able to open a terminal in VS Code to cnXXXX and edit/run scripts directly on cnXXXX.

Mac OSX: Run VS Code on a compute node

We encourage you to try using VS Code via Open OnDemand as it provides a much simpler and more stable connection to VS Code running on the Biowulf cluster and should support nearly all use cases that the remote SSH method supports.

The instructions for Mac OSX is very similar to the Windows instructions

  1. Install the "Remote Development" VScode extension on your Mac.

  2. Generate an ssh keypair and copy (passphrase protected) public key to Biowulf. See Mac section on https://hpc.nih.gov/docs/sshkeys.html

  3. In your Mac terminal:
    a) run "ssh-agent" to start the agent.
    b) Add your keys using "ssh-add".
    c) Add the following to .ssh\config in local computer (replace $username with your own username):
    Host cn*
    User $username
    ProxyCommand /usr/bin/ssh -o ForwardAgent=yes $username@biowulf.nih.gov nc -w 120ms %h %p

  4. In VSCode Remote SSH add the following in the settings section to your "Remote.SSH: Config File"(replace $username with your user name): /Users/$username/.ssh/config

  5. Start an sinteractive session on Biowulf (using an alternate method such as putty or nomachine) and take note of the compute node number (cnXXXX).

  6. Use VSCode "Remote-SSH Connect to Host" to connect to cnXXXX (replace "XXXX" with the actual compute node number obtained in step 5.

  7. You should now be able to open a terminal in VS Code to cnXXXX and edit/run scripts directly on cnXXXX.

Run Jupyter notebook on a compute node in VS Code

  1. Install Jupyter extension in VS Code

  2. Setup remote-ssh connection following above Windows step 1-13 or Mac step 1-7.

  3. Once connected to compute node (see node number at bottom left corner) following step 1, open jupyter nb file from 'File' menu and type the full path of the file such as /data/YourUserName/xxx.ipynb. Python environment can be selected by clicking 'select kernel' at top right corner and 'python environments'.

You are now running Jupyter Notebook on a compute node.

Please see the Biowulf Jupyter page for more information about running Jupyter outside VS Code on Biowulf.