There are times when it is just quicker, easier or even necessary to use a graphical application, and there are also times when you may be away from the computer that has your crucial applications installed.
Whatever the scenario, Linux and other operating systems running an X server have the ability to forward a graphical application through SSH. Following a few simple steps, you can run a remote application in all of its full graphical glory.
Note: if you are making multiple SSH connections to your remote machine, you can get your machine to show all active SSH connections.
Installation and Setup
Before you begin, you need to make sure that the SSH client and server are installed on the correct computers. The host computer that has the actual running applications needs to have an SSH server running.
To install SSH, you need to run the following command on both your client and server machines:
sudo apt install ssh
The other important preliminary step is to make sure both computers are connected to a network and that you can reach them via SSH. If the computers are in the same building, it will be easy. If not, you may have to configure the host computer to receive SSH connections through the firewall. See your router's documentation for the correct method of port forwarding.
Connecting to a Remote Server
- Open a terminal emulator: Gnome Terminal, Konsole or something similar.
- Connect to the host computer. As an example, if the host IP address is 192.168.68.155 and the host username is "ramces," you would type the following:
ssh -X firstname.lastname@example.org
This tells SSH to start the X-forwarding server calls to the client computer.
- At the password prompt, enter the password.
- Run the application. For example, if you want to run Gedit, just type the command:
Note: if you are using KDE, you will need to add "dbus-launch" before KDE applications. For example:
dbus-launch kwrite &. Other applications that do not require D-Bus should work without it.
Automating and Securing SSH X-Forwarding
You should now be able to run remote X applications at will. This can be very helpful if, for example, you are running a computer with a very small hard drive, no hard drive or even one without a CD-ROM drive, all of which are common with many netbooks and low-cost mini desktops.
To automate this process, you could set up SSH public keys to connect without passwords and write an executable script. Also, if you need a full X session forwarded, you can use VNC technology through TigerVNC and x11vnc.
As with any network solution, you also need to make sure that your remote server is secure. Using SSH provides a secure connection, but it's useless if your password is easy to guess and your firewall allows anyone to gain access to it.
Once you have a secure plan in place, remote X forwarding is an excellent way to load remote applications on demand and manage remote machines. The possibilities are only as limited to your imagination and the speed of your network connection.
Frequently Asked Questions
Can you use SSH X-Forwarding in Wayland systems?
Yes! You can easily use SSH X-Fowarding in Wayland by installing xwayland. This is a compatibility layer that serves to link Xorg-only applications to a purely Wayland environment. To install this, run
sudo apt install xwayland.
Aside from that, you can also force SSH X-Forwarding in Wayland systems by replacing the "-X" flag with "-Y." However, this alternative option is incredibly insecure. You need to make sure that you are in a closed, private network when you use this particular flag.
Why are some of my inputs in the remote application becoming lost.
This problem is most likely due to a latency issue between your local and remote machine. SSH X-Forwarding should be a reliable solution as long as there is less than 5000ms of lag between your local and remote machine, as the SSH client drops any exceedingly slow connection to protect it from a Slow Loris attack.
Can I access local files through my remote app with SSH X-forwarding?
No. By default, SSH X-forwarding only "streams" a GUI program from your remote machine to the display of your local computer so that a GUI program under X-forwarding behaves more like a projection than a hard copy of a program. Because of that, this remote GUI program will only be able to access the files that are also available in your remote machine.
Image credit: Unsplash. All alterations and screenshots by Ramces Red.
Our latest tutorials delivered straight to your inbox