I try to launch Firefox over SSH, using
ssh -X user@hostname
but it's very very slow.
How can I fix this? Is it a connection problem?
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. It only takes a minute to sign up.Sign up to join this community
The default ssh settings make for a pretty slow connection. Try the following instead:
ssh -YC4c arcfour,blowfish-cbc user@hostname firefox -no-remote
The options used are:
-Y Enables trusted X11 forwarding. Trusted X11 forwardings are not subjected to the X11 SECURITY extension controls. -C Requests compression of all data (including stdin, stdout, stderr, and data for forwarded X11 and TCP connections). The compression algorithm is the same used by gzip(1), and the “level” can be controlled by the CompressionLevel option for pro‐ tocol version 1. Compression is desirable on modem lines and other slow connections, but will only slow down things on fast networks. The default value can be set on a host-by-host basis in the configuration files; see the Compression option. -4 Forces ssh to use IPv4 addresses only. -c cipher_spec Selects the cipher specification for encrypting the session. For protocol version 2, cipher_spec is a comma-separated list of ciphers listed in order of preference. See the Ciphers keyword in ssh_config(5) for more information.
The main point here is to use a different encryption cypher, in this case arcfour which is faster than the default, and to compress the data being transferred.
NOTE: I am very, very far from an expert on this. The command above is what I use after finding it on a blog post somewhere and I have noticed a huge improvement in speed. I am sure the various commenters below know what they're talking about and that these encryption cyphers might not be the best ones. It is very likely that the only bit of this answer that is truly relevant is using the
-C switch to compress the data being transferred.
One of the biggest issues when launching some X-client remotely is the X-protocol, not so much the ssh overhead! The X-protocol requires a lot of ping-pong'ing between the client and the server which absolutely kills performance in the case of remote applications.
Try something like "x2go" (which also goes over ssh with default setups) in you will notice that firefox "flies" in comparison!
Several distributions provide the x2go packages out of the box, for instance Debian testing, or in Stable-Backports. But if not, see http://wiki.x2go.org/doku.php/download:start , they provide prebuilt binary packages/repositories for many distributions. You should install x2goclient (on the computer where you want to 'use' firefox) and x2goserver (in the computer where firefox should be running), you can then configure your sessions for single X applications of for full desktop views etc. The connection itself happens over ssh. It's a really wonderful tool :)
To use it, you run "x2goclient", it starts a GUI where you can create a new session: you provide the dns name of the server, port, ssh data, etc and then you select the "session type", ie, if you want a full remote KDE or GNOME desktop for instance, or just a "single application" and there you enter "firefox".
I have much better experience in using an
ssh tunnel to route traffic through another machine. It's very easy to set up since you have ssh access anyway. In a terminal on your computer, type
ssh -vv -ND 8080 user@yourserver
Keep this window open and watch it delivering some verbose messages about the data flowing through the tunnel.
firefox, go to Preferences -> Advanced -> Network -> Connection: Settings.
Select Manual proxy configuration and add a
SOCKS v5 proxy:
SOCKS Host: localhost Port 8080
Check your new IP by navigating to e.g. http://whatismyipaddress.com/.
You can use a firefox add-on like foxy proxy to dynamically switch proxies.
Firefox so slow over SSH because newer builds of firefox allow multiple instances.If you have bandwidth problems, use a light browser like dillo and you willl not even notice the connection speed.
Another thing that will improve your browsing over ssh is to enable pipelining in Firefox. Open about:config and change network.http.pipelining to true.