> For the complete documentation index, see [llms.txt](https://docs.devolutions.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.devolutions.net/resources/devolutions-agent/jump-host.md).

# Jump host

Configure a jump host in Remote Desktop Manager to relay sessions through a bastion server with Devolutions Agent and its RDP Extension.

The Jump host feature in Remote Desktop Manager connects to a remote host, often called a jump box, service host, or bastion server, which in turn connects to other hosts. In other words, the Jump feature opens a session within an RDP session. Remote Desktop Manager communicates with [Devolutions Agent](/resources/devolutions-agent.md) on the jump host over a secure channel within the RDP session. Remote Desktop Manager on the jump host then opens the final session to the destination system.

This can be compared to RD Gateway from Microsoft and, to some extent, SSH port forwarding.

## Usage scenarios

### Accessing a secure network through a single host

A strict firewall policy can allow connections only from a specific IP address. In this configuration, only the hosts that the jump host can reach are accessible. For example, a local host connects over the internet, through a firewall, to a single jump host, and only the jump host is allowed through the firewall. From there, the jump host has access to the remote hosts on the internal network behind it.

To access the remote hosts while exposing only the jump host to internet traffic, create strict firewall rules and open a single port. All connections then go through the jump host before reaching a remote host.

### Working around the limitations of some VPN clients

Some VPN clients cannot run concurrently on the same workstation. In this case, use multiple virtual machines, each running a single VPN client. Using these virtual machines as jump hosts allows you to connect to the virtual machine, launch the VPN client, and then launch the remote session.

## Requirements

* The jump host entry must be an ***RDP*** entry.
* Remote Desktop Manager must be installed on the jump host. It does not have to connect to any workspace: Devolutions Agent starts it when a jump begins, and the target entry is sent from the local Remote Desktop Manager.
* Devolutions Agent must be installed on the jump host with the ***RDP Extension*** feature.
* The jump feature does not bypass Microsoft licensing limits for more than two concurrent RDP sessions. To support additional connections, install the Remote Desktop Session Host role and purchase per-user RDS CALs. For details, see Microsoft: [Activate the Remote Desktop Services license server](https://learn.microsoft.com/en-us/windows-server/remote/remote-desktop-services/rds-activate-license-server).
* Jumps are not supported in the user vault.

## Install Devolutions Agent on the jump host

Devolutions Agent is available as an **MSI** for direct deployment or integration with software management platforms, and through **WinGet** (**Chocolatey** is also available) for command-line installation. To deploy the MSI silently and choose which components are installed, see [Deploy Devolutions Agent silently](/resources/devolutions-agent/deploy-devolutions-agent-silently.md).

1. Install Remote Desktop Manager on the jump host.
2. Download Devolutions Agent from [Devolutions' website](https://devolutions.net/agent/) and run the installer on the jump host. See [Devolutions Agent](/resources/devolutions-agent.md) for more details.
3. In the feature selection step of the installer, make sure the ***RDP Extension*** feature is selected (it is selected by default).
4. Complete the installation. No restart or sign-out is needed.
5. If an RDP session to the jump host was open during the installation, close it and open it again.

{% hint style="info" %}
For a silent installation, the ***RDP Extension*** feature ID is `F.Session`. Include it in `ADDLOCAL`, for example `ADDLOCAL="F.Agent,F.Updater,F.Session"`.
{% endhint %}

{% hint style="info" %}
The communication channel with Devolutions Agent is set up when the RDP connection to the jump host is established. An RDP session opened before Devolutions Agent was installed cannot be used for jumps.
{% endhint %}

## Configure the jump host entry

1. In the local Remote Desktop Manager, create an ***RDP*** entry for the jump host.
2. Fill in the ***Name***, ***Host***, and ***Credentials*** of the entry.
3. Go to ***Connection*** – ***Jump*** (on macOS, ***Connection*** – ***Jump host***).
4. In the ***Jump host*** section, check ***Is jump host***.
5. Adjust the other options of the ***Jump host*** section if needed (see the table below).
6. Click ***OK***.

{% hint style="warning" %}
Save the credentials in the jump host entry. If the jump host session prompts for credentials when it opens, the jump can fail before Devolutions Agent responds.
{% endhint %}

| Option                                           | Description                                                                                                                                                         |
| ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ***Is jump host***                               | Identifies the entry as a jump host that other entries can connect through.                                                                                         |
| ***Agent connection timeout***                   | Time, in seconds, to wait for Devolutions Agent to respond on the jump host before the jump fails.                                                                  |
| ***Force new jump host session for every jump*** | Opens a new jump host session for each jump instead of reusing the open one. Requires Remote Desktop Services to be configured to allow multiple sessions per user. |
| ***Show wait for Devolutions Agent dialog***     | Displays a dialog while Remote Desktop Manager waits for Devolutions Agent to respond on the jump host.                                                             |

## Configure an entry to connect through the jump host

1. In the local Remote Desktop Manager, create or open the entry to reach through the jump host.
2. Go to ***Connection*** – ***Jump*** (on macOS, ***Connection*** – ***Jump host***).
3. In the ***Jump connection*** section, click the value next to ***Connect using Jump*** (***Off*** by default).
4. In ***Jump***, select how the jump host is resolved (see the table below).
5. Click ***Save***.
6. Click ***OK***.

| Jump                            | Description                                                                                                                               |
| ------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| ***Off***                       | The entry does not use a jump host.                                                                                                       |
| ***Inherited***                 | Uses the jump host defined on the parent folder.                                                                                          |
| ***Session***                   | Uses a specific jump host entry. Select it in ***Session***; check ***Filter Jump Host only*** to list only entries marked as jump hosts. |
| ***Session (user vault)***      | Uses a specific jump host entry from the user vault.                                                                                      |
| ***Find by name (user vault)*** | Uses the user vault jump host entry whose name matches the ***Search*** value.                                                            |

{% hint style="info" %}
If ***Connect using Jump*** is unavailable, the ***Disable Devolutions Agent jump*** system setting is enabled for the vault.
{% endhint %}

## Validate that the jump host works

1. On the jump host, confirm that the Devolutions Agent service is running, for example with the PowerShell command `Get-Service DevolutionsAgent`.
2. Confirm that the ***RDP Extension*** is enabled: in `C:\ProgramData\Devolutions\Agent\agent.json`, the `Session` section shows `"Enabled": true`.
3. Confirm that Remote Desktop Manager is installed on the jump host.
4. In the local Remote Desktop Manager, open the entry configured to connect through the jump host. The jump host session opens first, then the target session starts on it.

If the jump fails, close all sessions to the jump host and try again, as the communication channel with Devolutions Agent is only set up when the RDP connection is established. If Remote Desktop Manager on the jump host is outdated, an error message asks to update it.

## Pro tips

* The selected session in the local Remote Desktop Manager follows the session focus on the jump host.
* To run a script on the jump host, right-click the jump host session and select ***Devolutions Agent*** – ***Execute script***.
* To gain more space for remote sessions on the jump host, hide the ***Ribbon*** and the ***navigation pane*** of Remote Desktop Manager on the jump host from the ***View*** tab. To reset the layout, in the ***Window*** tab, click ***Reset Layout***.

## See also

* [Devolutions Agent](/resources/devolutions-agent.md)
* [Deploy Devolutions Agent silently](/resources/devolutions-agent/deploy-devolutions-agent-silently.md)
* [Devolutions Academy – Configure a Jump Host with Devolutions Agent in Remote Desktop Manager](https://academy.devolutions.net/student/activity/3541611-configure-a-jump-host-with-devolutions-agent-in-remote-desktop-manager)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.devolutions.net/resources/devolutions-agent/jump-host.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
