IntelliJ IDEA 2022.3 Help

Connect and work with JetBrains Gateway

You can connect to a remote server using the SSH connection to develop, run and deploy your project.

You can also connect to development environments running on JetBrains Space, Gitpod, Google Cloud, GitHub Codespaces, and Amazon CodeCatalyst.

Prerequisites

Before you start developing on the remote machine, make sure you have the following:

  • Remote machine (a target for an IDE) meets the minimum recommended requirements that can be found in IDEs articles.

  • You have installed a compatible SSH server on the Linux platform.

  • The Linux platform has any recent Linux AMD64 distribution such as Ubuntu 16.04+, RHEL/Centos 7+, and so on. There is no arm64 support yet. We recommend using machines with 2+ cores, 4GB+ of RAM, and 5GB+ of disk space.

  • You need to have the sftp subsystem enabled on the remote host. In the current implementation, we use it for the backend deployment.

JetBrains Gateway

JetBrains Gateway is a lightweight launcher that connects a remote server with your local machine, downloads necessary components on the backend, and opens your project in JetBrains Client.

Check out the quick video on how to start working with JetBrains Gateway.

You can use JetBrains Gateway as a standalone launcher or as an entry point from your IDE to connect to a remote server.

Launch JetBrains Gateway and connect to a remote server

  1. Use one of the installation scenarios to open the Remote Development wizard.

  2. In the Remote Development wizard, click New Connection under the SSH connection provider.

    Connect via SSH
  3. On the next page of the wizard, specify the SSH configuration through which you want to connect to a remote server.

    SSH settings

    Alternatively, click SSH configurations to open the SSH Configurations dialog and configure the SSH settings.

    In the SSH Configurations dialog, add the following information:

    SSH configurations
    • Host: specify the address of your remote server.

    • Port: specify the SSH port, which defaults to 22.

    • Local port: specify the outgoing port.

      For example, TCP 10.101.0.1:50705->13.49.137.87:22 (ESTABLISHED).

    • User name: specify the name of a user that will be used to connect to the remote server.

    • Authentication type: select one of the following authentication methods:

      • Password: to access the host with a password. To save the password in IntelliJ IDEA, select the Save password checkbox.

      • Key pair (OpenSSH or PuTTY): to use SSH authentication with a key pair. To apply this authentication method, you must have a private key on the client machine and a public key on the remote server. IntelliJ IDEA supports private keys that are generated with the OpenSSH utility.

        Specify the path to the file where your private key is stored and type the passphrase (if any) in the corresponding fields. To have IntelliJ IDEA remember the passphrase, select the Save passphrase checkbox.

      • Parse config file ~/.ssh/config: select this option if you want JetBrains Gateway to use the .ssh/config file.

    • Test Connection: click this button to see whether the connection is established.

    • Connection Parameters: use this section to configure additional parameters for the connection.

    • HTTP/SOCKS Proxy: use this section to configure proxy settings. For more information, refer to Proxy settings.

    Click OK to save the changes and return to the Welcome to JetBrains Gateway dialog.

    Click Check Connection and Continue to check whether the connection is established.

  4. On the next page, specify the IntelliJ IDEA version to download to the remote server. JetBrains Gateway displays a list of the IDEs versions that are available for downloading and the already installed ones.

    You can also use "Other options" for setting the alternative sources of IDE installers.

    The version of JetBrains Client downloaded to your local machine always matches the remote IDE version.

the IDE version

By default, the downloaded IntelliJ IDEA is located in the following folder on the remote server: ~/.cache/JetBrains/RemoteDev/dist. However, you can change it and install IntelliJ IDEA into a custom location with the following steps:

  • Click Other options and select the Customize install path option.

  • In the Install path field add the needed location for the installation.

Install to custom location

Add the path to your project on the remote host.

Path to remote project

Click Upload IDE and Connect.

JetBrains Gateway downloads the IDE, and opens your remote project in JetBrains Client. The connection is shown in the JetBrains Gateway window, from which you can connect to other IDEs or disable the connection. This window is hidden to tray by default.

Gateway window

Open recent projects

  1. In the JetBrains Gateway wizard, select SSH from the options on the left.

  2. In the search field enter the name of your project to quickly navigate to it.

    Recent projects

    If you need to quickly access the terminal, click Open terminal.

Stop the running instance

  1. In the JetBrains Gateway wizard, select SSH from the options on the left.

  2. When your remote session is active, the Running indicator is displayed next to the project.

    Running instance

    Click Platform impl actions more next to the project and select Stop Instance to stop the remote session for that project.

    Stop instance

    You can also select Remove from Recent Projects to remove the project listed on the page altogether.

Uninstall the backend IDE version

  1. In the JetBrains Gateway wizard, click the Manage IDEs icon against the name of the remote server to open the list of installed IDE versions.

    Manage IDE
  2. In the window that opens, click the Close icon against the backend IDE version you need to uninstall and click Yes to confirm the action.

Connect to a remote project at manually launched remote IDE (Server-to-client flow)

If you already have IntelliJ IDEA installed on your remote server, you can launch it manually and connect to the remote project started in that IDE. It works the same way as from JetBrains Gateway.

Use this approach if your company has a custom orchestration or in case your remote IDE starts automatically on its side.

The process can be described as follows:

  1. Start a backend project in the remote IDE.

  2. Select one of the connection links generated by the backend.

  3. Open the link on your local machine.

The main script to run a remote IDE is remote-dev-server.sh, located in the bin subdirectory of your unpacked IDE.

Connect to remote IDE

  1. Ensure you have downloaded and installed JetBrains Gateway or an IDE with this bundled plugin on your local machine.

  2. Ensure you have an SSH connection to the remote machine and the IntelliJ IDEA IDE on it.

  3. In the remote server's terminal, run the following command:

    remote-dev-server.sh run /path_to_project/ --ssh-link-host host_server_address --ssh-link-user remote_side_user --ssh-link-port ssh_connection_port

    See example:

    ~/ideaIU-213.3469/bin/remote-dev-server.sh run ~/spring-boot-example/ --ssh-link-host ec2-11-50-136-85.eu-north-1.compute.amazonaws.com --ssh-link-user ubuntu

    If you don't pass the parameters, the script will use the default ones: 22 for port, system user's username, and host from the hostname command.

  4. If the project starts successfully, as an output, you should receive the following 3 links inside terminal:

    • Join link: tcp://127.0.0.1:5990...[ ]: contains the local address and port where the remote IDE is listening now.

      To use it, ensure the remote machine should be accessible by this local address. For example, for inside-Docker IDE with forwarded/open ports.

    • Http link: https://code-with-me.jetbrains.com/remoteDev...[ ]: contains information about your host-port-user, the IDE and its version.

      When opening in your local browser, it displays a welcome page and tries to call the local Gateway application with pre-filled connection settings values.

      If no JetBrains Gateway application is found on the local machine, you'll be able to download it from the welcome page.

    • Gateway link: jetbrains-gateway://connect#idePath... [ ]: also contains information about your host-port-user, IDE and its version.

      When opening in your local browser, it launches the local JetBrains Gateway application directly without a welcome page.

  5. Copy the generated link and paste it into your local browser and allow it to launch Open JetBrains Gateway.

  6. All these links can be also opened in the already launched JetBrains Gateway.

    For this, on the JetBrains Gateway welcome screen, paste a link in the Connect to a Running IDE field, click Connect.

    IntelliJ IDEA downloads the required version of JetBrains Client and opens the remote project inside it.

Registering previously installed remote IDE

Since version 221.5481, you can manually register an existing backend IDE on the remote server and make it visible for the Gateway.

To register the installed IDE and make it appear in the list of available builds follow these steps:

  1. Enter remote server by SSH

  2. Locate the folder with unpacked IDE, enter bin folder

  3. In the command line, execute the following command:

    remote-dev-server.sh registerBackendLocationForGateway

    For example,

    sh WebStorm-221.5591.52/bin/remote-dev-server.sh registerBackendLocationForGateway

Connect through Space

You can perform a custom orchestration on your remote server and use, for example, a Docker file, or any other automation that fits with your practices. This could be creating a new virtual image every night, taking the empty environment, and checking out the latest source code, with a fresh clean image ready to use in the morning.

However, if you work in Space, the integration with JetBrains Gateway lets you automate all processes in configuring your dev environment that you can use for software development.

Space automates for you the following processes:

  • Creating a remote virtual machine

  • Starting a Docker image with appropriate libraries and tools

  • Downloading and warming up the backend IDE so you can easily open your project and dive into coding right away.

Connect via Space

  1. Launch JetBrains Gateway.

  2. On the starting page, select JetBrains Space and click Connect to Space.

  3. Enter your organization URL and click Continue in Browser.

    Log in to Space
  4. In the browser window that opens, click Accept to grant the required permissions. If you are not yet logged in to the Space web app, you will also be prompted to enter your Space username and password. You will be then redirected back to your JetBrains Gateway.

  5. Click New Environment and configure a new dev environment (skip this step if your project already has the needed dev environment):

    • Select a repository and a branch where you want to create a dev environment.

    • In the Devfile list, select a devfile (if it exists in your Space project).

    • In the IDE list, select an IDE to be used in the dev environment.

    • In the Instance type list, select a type of the virtual machine based on the resources you need and computation credits.

    • In the Environment name field, enter a name for the environment to distinguish it from other environments.

    Click Create Environment to complete the environment creation.

    The New Dev Environment window
  6. In the list of dev environments, select an environments to which you want to connect.

    The Dev Environments window

This will initiate a connection to the remote IDE. Once the connection is successfully established, JetBrains Gateway will open JetBrains Client with your Space project where you can work further.

Connect to Google Cloud

You can connect to Google Cloud with JetBrains Gateway to work on your remote project.

Before trying to connect to Google Cloud, make sure you have the following:

  • You (or an admin) set up a Cloud workstations configuration file and cluster

  • You created a workstation

  • You can access the workstation

The Cloud Workstations plugin allows you to connect a workstation and work with it in IntelliJ IDEA.

Connect to your workstation in Google Cloud

  1. Launch JetBrains Gateway.

  2. Select All Providers from the options on the left.

  3. In the Install More Providers section, locate Cloud Workstations and click Install Plugin.

    Google Cloud

    The installed plugin is added and you can locate it in the Run the IDE Remotely section.

  4. After the plugin installation, from the options on the left, locate Cloud Workstations and click Connect to Google Cloud.

  5. In the window that opens, select a workstation with which you want to work and click Next.

    Connect to Cloud Workstation
  6. On the next page, select the IDE version that you have chosen as your code provider in your configuration file and a project with which you want to work.

    IDE version and a project

    The connection is established and the workstation with the project is opened in JetBrains Client where you can work further inside the IDE.

Connect to Gitpod

JetBrains Gateway supports integration with Gitpod, an open-source orchestration and provisioning platform for automated developer environments.

Gitpod is available in JetBrains Gateway as a plugin that you can use to connect to the existing Gitpod workspaces or create a new one and work with it in IntelliJ IDEA.

Connect to your workspace on Gitpod

  1. Launch JetBrains Gateway.

  2. Select Remote Development from the options on the left.

  3. In the Install More Providers section, locate Gitpod and click Install Plugin.

    Install Gitpod

    The installed plugin is added and you can locate it under the Remote Development node as well as in the Install More Providers section.

  4. After the plugin installation, from the options on the right, locate Gitpod and click Connect to Gitpod.

    Welcome Screen: installed the Gitpod plugin

    .

  5. In the window that opens, select the IDE with which you want to work.

    Gitpod IDE selection
  6. Click New Workspace.

    JetBrains Gateway connects you to your Gitpod workspace in browser. Gitpod prepares the workspace and displays a notification about opening the workspace inside JetBrains Client.

    Open JetBrains Gateway in browser

    Click Allow and then Yes in the authentication dialog.

    The connection is established and the workspace with the project is opened in JetBrains Client where you can work further inside the IDE.

    The created workspace is added to the Recent workspaces section. If you have existing workspaces they are added to the list of recent workspaces and you can connect to them at any time by clicking Connect against the needed workspace.

    Recent workspaces

If you want to connect to JetBrains Gateway directly from the Gitpod, follow the Gitpod documentation.

Connect to GitHub Codespaces

You can connect to GitHub Codespaces with JetBrains Gateway to work on your remote project.

GitHub Codespaces is available in JetBrains Gateway as a plugin that you can use to connect to the existing environment or create the new one and work with it in IntelliJ IDEA.

Before you attempt to connect, make sure that the following prerequisites are met:

  • You have gh installed and configured correctly by running gh auth login prior to launching JetBrains Gateway.

  • You have the GitHub CLI version 2.2.0 or later.

    You can check the version with the following command:

    $ gh --version

Connect to your Codespaces developer environment

  1. Launch JetBrains Gateway.

  2. Click App general gear on the bottom of the screen and select Manage Providers.

  3. On the page that opens, on the Marketplace tab, locate GitHub Codespaces, install and enable the plugin.

    GitHub Codespaces plugin

    The plugin is added to the Connections list.

  4. Select All Providers from the options on the left.

  5. From the options on the right, locate GitHub Codespaces and click Connect to Codespaces.

    Connect to GitHub Codespaces
  6. On the next page, follow the GitHub Codespaces instructions to authorize your account on GitHub.

    SignIn to GitHub Codespaces
  7. After the authorization is complete, a list of available GitHub Codespaces will displayed and you can select the desired project.

    Your Codespaces
  8. Select the IDE version that you want to run and click Connect.

    Select the IDE

    The connection is established.

    Connecting the IDE backend

    The GitHub Codespaces development environment with the selected project is opened in JetBrains Client where you can work further inside the IDE.

Connect to Amazon CodeCatalyst Dev Environment

Amazon CodeCatalyst is a cloud-based collaboration space for software developer teams.

You can connect to Amazon CodeCatalyst with JetBrains Gateway to work on your remote project. Alternatively, you can connect from the CodeCatalyst side and open your project in JetBrains Client.

Amazon CodeCatalyst is available in JetBrains Gateway through the AWS Toolkit plugin that you can use to connect to the existing environment or create the new one and work with it in IntelliJ IDEA.

Before you attempt to connect, make sure that the following prerequisites are met:

  • You must have an active AWS Builder ID and CodeCatalyst account.

  • You have the AWS Toolkit installed and enabled.

Connect to your Dev environment from JetBrains Gateway

  1. Launch JetBrains Gateway.

  2. Click App general gear on the bottom of the screen and select Manage Providers.

  3. On the page that opens, on the Marketplace tab, locate AWS Toolkit, install and enable the plugin.

    The plugin is added to the Connections list.

  4. Select All Providers from the options on the left.

  5. From the options on the right, locate Amazon CodeCatalyst and click Login to AWS Builder ID.

  6. On the next page of the wizard, log in to your AWS account.

    Login to AWS Builder ID
  7. Select the IDE, add the necessary information to create development environment and click Create Dev Environment.

    Create new Dev Environment

    The dev environment is created and the project opens inside the IDE.

    Open project

You can also create a Dev Environment from Amazon CodeCatalyst console and connect to it using JetBrains Gateway.

Connect from Amazon CodeCatalyst

  1. Log in to your Amazon CodeCatalyst account.

  2. In the created Space, locate and open your Project.

  3. If you have no Dev environments set up, click Create Dev Environment.

  4. In the list of available IDEs, select the one you need, add the necessary information and click Create.

    Create Dev Environment

    The Dev environment is created showing you the activity status.

  5. Click Resume in to open JetBrains Gateway and the project in Jetbrains Client.

    Open in JetBrains Gateway

    When the Dev environment is ready, the project will open inside the IDE where you can work with it further.

Connect to a project running on WSL2

You can configure your IDE backend to launch directly in WSL2.

Before you start connecting to WSL, make sure the following prerequisites are met:

  • You have the Windows 10 or 11 version installed on your machine with the Ubuntu 20.04 version installed under WSL2.

  • You have WSL2 configured on your Windows machine. For more information, refer to the WSL2 configuration section.

  • You have at least 200 GB of available space, 8 GB RAM, and 4 CPUs.

  • You use the latest EAP build of JetBrains Gateway.

  • You use the latest EAP version of the backend IDE.

Connect to WSL

  1. Launch JetBrains Gateway.

  2. In the All Providers list select WSL.

  3. From the options on the right, click New Connection.

    New Connection
  4. On the next page, select the WSL instance and click Next.

    Choose WSL instance
  5. On the next page, select the IDE version and the project you want open. Click Start IDE and Connect.

    Choose the IDE version and a project

    The connection is established, the backend IDE is downloaded and the project is opened in JetBrains Client.

Install plugins

You can install plugins that you need on the remote server. Note that plugins are installed per project. Each time you create a remote connection for a new project, you need to install the desired plugin.

Based on the scenario that you use for downloading IntelliJ IDEA on the remote server, you either install the plugin via the command line or use the UI of a remote project for your installation.

Install a plugin via the command line

If you manually configure IntelliJ IDEA on the remote server, use the following steps to add plugins:

  1. From the JetBrains Marketplace page, find a page of the required plugin, select the Versions tab, and click any version to copy pluginId (short name such as org.rust.lang) of the plugin you want to install.

  2. Open the remote server, go to the IntelliJ IDEA instance where your project resides, and for which you want to download and install a third-party plugin.

    By default, the downloaded IntelliJ IDEA instances are located in the following directory:

    ~/.cache/JetBrains/RemoteDev/dist
  3. Add the following command:

    bin/remote-dev-server.sh installPlugins PROJECT_PATH pluginId

    (where PROJECT_PATH is a path to your remote project and pluginId is an ID you got from the JetBrains Marketplace page.)

    After the installation, unpack the downloaded plugin's archive.

    By default, the installed plugin is placed into the following folder on the backend:

    ~/.cache/JetBrains/RemoteDev-IU/PROJECT_PATH/plugins/
  4. Continue with launching JetBrains Gateway and opening the remote project with the remotely installed plugin.

Install a plugin via UI

If you use JetBrains Gateway to download IntelliJ IDEA to a remote server, use the following steps to install plugins.

  1. Open a remote project in JetBrains Client.

  2. Press Ctrl+Alt+S to open the IDE settings and select Plugins On Host.

  3. Download the needed plugin the same way as you would in a regular IntelliJ IDEA project.

    The Plugins settings dialog

    For more information on regular plugin installation, refer to Install plugins.

  4. After you download and enable the plugin, click OK to save the changes.

    The plugin is installed remotely. However, keep in mind that the plugin is installed per project.

Last modified: 01 December 2022