How can I execute scribus on a remote machine and display it on the local machine?

From Scribus Wiki
Jump to navigation Jump to search


This article is part of the FAQ series.
Installation Usage PDF issues Fonts DTP Other

X11 forwarding over SSH

Try typing:

ssh -X <remote-machine-name>

Then just start Scribus, it should be displayed on your local screen. This is the preferred method for several reasons. It's more secure, it's simpler, and because SSH can perform compression it's generally faster. It also takes care of problems caused by NAT (network address translation) without your intervention. It even works with Cygwin and it's X server, so you can display Scribus to a Windows workstation.

Note that the machine you're running Scribus on (the ssh server) may need a line like:

X11Forwarding yes

in /etc/ssh/sshd_config in order for it to permit the display of X programs remotely.

It's also possible to have ssh connect, run the program, and go into the background. This can be extremely useful for things like launcher buttons. For example:

ssh -n -f -X -C <remote-machine-name> scribus

will connect to the remote machine, start Scribus, and go into the background when Scribus has started up. When you quit Scribus, ssh will also quit, so you don't need to worry about that. The -f makes it go into the background. -n tells ssh not to give the remote command any standard input, which is usually a good idea when running X11 programs in the background. The -C argument requests that ssh compress the data, which will give a signficant perfoamance boost over slower links.

Some other things can also make ssh a lot easier to use. The most significant is using public key authentication instead of passwords, and saving your key in the ssh agent. The ssh-keygen and ssh-add manual pages should say more, or check out this article. (I've seen better ones than that, but can't find them - if someone could point out a better one that'd be great --ringerc).

X11 display redirection

Alternately, you could use old-style X11 display redirection. Assuming you want to display scribus to display 0 on remotehost:

DISPLAY=remotehost:0 scribus

You may need to use xhost on the machine you want Scribus to display on to give the machine you wish to display from permission to access the display, or preferably use xauth to copy the required authentication data. SSH's X forwarding takes care of that automatically. Some distros also tell the X server not to listen to TCP/IP connections, and this method will not work with them (but, again, will work fine with SSH) unless you change the settings to let the X server accept TCP/IP connections.

Note that old-style display redirection can be insecure - if there's an untrusted user on the remote machine and you've used xhost to permit access, they could start a keystroke logger on your display. Also, everything gets transmitted unencrypted, so someone listening on the network could capture any sensitive information you send. This is yet another good reason to use SSH instead.

FreeNX and NX client

Note that both X11 forwarding over SSH and old-style display redirection tend to be quite slow over high latency or low bandwidth links. NX handles these very well. You can find nxclient and nxserver at www.nomachine.com.

NX works really well even over a slow (40kBits/sec) connection. The nxclient is free (as beer) for Windows, Linux, and Mac OS X. The commercial NX server costs 50...500 EUR. However, there is a free implementation FreeNX available as well, which since the latest release of the version 0.40 is no more difficult to install and works reliably.