# Visual Studio Code

This guide explains how to use Teleport and Visual Studio Code's remote SSH extension.

## How it works

The Visual Studio Code Remote - SSH extension uses the local SSH client to access a remote server. You can use Teleport to generate a configuration for your local SSH client that instructs the client to connect to a Teleport-protected Linux server using a Teleport-issued OpenSSH certificate.

## Prerequisites

- A running Teleport cluster. If you want to get started with Teleport, [sign up](https://goteleport.com/signup) for a free trial or [set up a demo environment](https://goteleport.com/docs/ver/17.x/get-started/deploy-community.md).

- The `tsh` client.

  Installing `tsh` client

  1. Determine the version of your Teleport cluster. The `tsh` client must be at most one major version behind your Teleport cluster version. Send a GET request to the Proxy Service at `/v1/webapi/find` and use a JSON query tool to obtain your cluster version. Replace teleport.example.com:443 with the web address of your Teleport Proxy Service:

     ```
     $ TELEPORT_DOMAIN=teleport.example.com:443
     $ TELEPORT_VERSION="$(curl -s https://$TELEPORT_DOMAIN/v1/webapi/find | jq -r '.server_version')"
     ```

  2. Follow the instructions for your platform to install `tsh` client:

     **Mac**

     Download the signed macOS .pkg installer for Teleport, which includes the `tsh` client:

     ```
     $ curl -O https://cdn.teleport.dev/teleport-${TELEPORT_VERSION?}.pkg
     ```

     In Finder double-click the `pkg` file to begin installation.

     ---

     DANGER

     Using Homebrew to install Teleport is not supported. The Teleport package in Homebrew is not maintained by Teleport and we can't guarantee its reliability or security.

     ---

     **Windows - Powershell**

     ```
     $ curl.exe -O https://cdn.teleport.dev/teleport-v${TELEPORT_VERSION?}-windows-amd64-bin.zip
     Unzip the archive and move the `tsh` client to your %PATH%
     NOTE: Do not place the `tsh` client in the System32 directory, as this can cause issues when using WinSCP.
     Use %SystemRoot% (C:\Windows) or %USERPROFILE% (C:\Users\<username>) instead.
     ```

     **Linux**

     All of the Teleport binaries in Linux installations include the `tsh` client. For more options (including RPM/DEB packages and downloads for i386/ARM/ARM64) see our [installation page](https://goteleport.com/docs/ver/17.x/installation.md).

     ```
     $ curl -O https://cdn.teleport.dev/teleport-v${TELEPORT_VERSION?}-linux-amd64-bin.tar.gz
     $ tar -xzf teleport-v${TELEPORT_VERSION?}-linux-amd64-bin.tar.gz
     $ cd teleport
     $ sudo ./install
     Teleport binaries have been copied to /usr/local/bin
     ```

* OpenSSH client.
* Visual Studio Code with the [Remote - SSH extension](https://code.visualstudio.com/docs/remote/ssh#_system-requirements) for the Remote - SSH extension.
* One or more Teleport Agents running the Teleport SSH Service. If you have not yet done this, read the [getting started guide](https://goteleport.com/docs/ver/17.x/enroll-resources/server-access/getting-started.md) to learn how.

---

NOTE

Linux and macOS clients should rely on their operating system-provided OpenSSH packages. Windows 10 clients should refer to Microsoft's [OpenSSH guide](https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_install_firstuse); older clients can use `ssh.exe` from either [Git for Windows](https://git-scm.com/downloads) or Microsoft's [Win32-OpenSSH project](https://github.com/powershell/Win32-OpenSSH).

---

## Step 1/3. First-time setup

Configure your local SSH client to access Teleport Nodes. Replace teleport.example.com with the address of your Teleport Proxy Service (e.g., `mytenant.teleport.sh` for Teleport Cloud users), and replace alice with your Teleport user.

```
log in to your proxy:
$ tsh login --proxy teleport.example.com --user alice

generate the OpenSSH config for the proxy:
$ tsh config --proxy teleport.example.com
```

Append the resulting configuration snippet into your SSH config file located in the path below:

**Linux/macOS**

`$HOME/.ssh/config`

**Windows**

`%UserProfile%\.ssh\config`

---

WARNING

If using PowerShell on Windows to write your SSH config, note that normal shell redirection may write the file with the incorrect encoding. To ensure it's written properly, try the following:

```
$ tsh.exe config | out-file .ssh\config -encoding utf8 -append
```

---

You should be able to connect to the desired node using following command, replacing user with the username you would like to assume on the node and example-node with the node name:

```
$ ssh user@example-node.teleport.example.com
```

Details

Teleport Cloud

The SSH config you generated earlier instructs your SSH client to run `tsh proxy ssh` to access a Node in your Teleport cluster. However, running an `ssh` command against the Teleport Proxy Service at `yourtenant.teleport.sh` will result in an error.

---

NOTE

Teleport's certificates expire fairly quickly, after which SSH attempts will fail with an error like the following:

```
alice@proxy.foo.example.com: Permission denied (publickey).
ERROR: exit status 255

kex_exchange_identification: Connection closed by remote host

```

When you see this error, re-run `tsh login` to refresh your local certificate.

---

## Step 2/3. Configure Visual Studio Code

Install the [Remote - SSH extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh) in your local VS Code instance. A new "Window Indicator" (icon with two arrows) should appear in the bottom left of your VS Code window.

![Window Indicator in bottom left corner of VS Code](data:image/png;base64,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)

Prior to connecting with a host, set the `Remote.SSH: Use Local Server` setting to false in the extension setting. You can search for `@ext:ms-vscode-remote.remote-ssh `to find the plugin-specific settings.

![Remote SSH Extension VS Code Settings](/docs/assets/images/settings-c63f56813884855099a4673e5ab77583.png)

To connect, click on the icon with two arrows and select "Connect to Host...". Select "+ Add New SSH Host..."

For each host you wish to remotely develop on, add an entry like the following:

```
alice@node000.foo.example.com

```

![Input box to add new Node](/docs/assets/images/add-host-ffb74f6d2bd8f38eae3db2872332d620.png)

When prompted to choose which SSH Configuration file to update select the one we generated during Step 1.

This will write a new node into your SSH Configuration file. You can edit and manage all your nodes in this file.

## Step 3/3. Start a Remote Development session

Start a Remote Development session by either:

1. Clicking "Connect" on the notification that opens after adding a new host.

![Notification of \&quot;Host added\&quot; that has connect button](/docs/assets/images/host-added-notification-70874020e08c6f2b6ab18ee1d0457008.png)

2. Clicking on the Window Indicator again and selecting "Connect to Host". You should see the host you just added and any others in your Configuration file in the drop down.

![Connecting to a Teleport host in VS Code](/docs/assets/images/select-host-to-connect-5ac66064f125df570843044b7974f6dc.png)

On first connect, you'll be prompted to configure the remote OS. Select the proper platform and VS Code will install its server-side component. When it completes, you should be left with a working editor:

![VS Code connected to a Teleport Node](/docs/assets/images/connected-editor-6a1d372766726f80625b1ce0e485a1fa.png)

The Window Indicator in the bottom left highlights the currently connected remote host.

## Next Steps

### Connecting to OpenSSH Hosts

It's possible to remotely develop on any OpenSSH host joined to a Teleport cluster so long as its host OS is supported by VS Code. Refer to the [OpenSSH guide](https://goteleport.com/docs/ver/17.x/enroll-resources/server-access/openssh.md) to configure the remote host to authenticate via Teleport certificates, after which the procedure outlined above can be used to connect to the host in VS Code.

### Using OpenSSH clients

This guide makes use of `tsh config`; refer to the [dedicated guide](https://goteleport.com/docs/ver/17.x/enroll-resources/server-access/openssh.md) for additional information.

## Further reading

- [VS Code Remote Development](https://code.visualstudio.com/docs/remote/remote-overview)
