SSH: X-Forwarding

Updated . Posted . Visible to the public.

If you need to run a program on a remote machine (e.g. to your office PC) with a graphical UI (and you trust the remote machine), you can use SSH X-Forwarding. I sometimes use this to connect to a virtual machine installed on my work PC from my home office.

Forwarding X over SSH

To use X forwarding, when connecting to the remote machine, and add -X to the ssh call. Now, when you start a program with a UI (e.g. virtualbox) in that SSH session, a window will open on your local machine. It will not be particularly snappy, but on a decent connection it will be usable.

Note: This allows the remote machine to gain access to your X session, which is a security risk. Only use -X if you trust the remote machine a 100%. Do not make it a default in your SSH config.

Configuring sshd

The remote machine may not be configured to forward X by default. In that case, when connecting via ssh -X, you will get a warning:

X11 forwarding request failed on channel 0

To fix that, you need to enable X forwarding on the target machine:

  1. ssh remote-machine
  2. sudo vim /etc/ssh/sshd_config
  3. Set X11Forwarding yes and save
  4. sudo service sshd reload (existing connections will not be terminated)
Tobias Kraze
Last edit
Arne Hartherz
License
Source code in this card is licensed under the MIT License.
Posted by Tobias Kraze to makandra dev (2018-07-27 17:09)