it-swarm.com.de

Warum ist Firefox über SSH so langsam?

Ich versuche, Firefox über SSH mit zu starten

ssh -X [email protected]

und dann

firefox -no-remote

aber es ist sehr sehr langsam.

Wie kann ich das beheben? Ist es ein Verbindungsproblem?

40
DevOps85

Die Standardeinstellungen für ssh sorgen für eine ziemlich langsame Verbindung. Versuchen Sie stattdessen Folgendes:

ssh -YC4c arcfour,blowfish-cbc [email protected] firefox -no-remote

Folgende Optionen werden verwendet:

-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.

Der Hauptpunkt hierbei ist, einen anderen Verschlüsselungsschlüssel zu verwenden, in diesem Fall arcfour, der schneller als der Standard ist, und die übertragenen Daten zu komprimieren.


HINWEIS: Ich bin sehr, sehr weit von einem Experten in diesem Bereich entfernt. Der obige Befehl wird verwendet, nachdem ich ihn irgendwo in einem Blog-Beitrag gefunden habe, und ich habe eine enorme Verbesserung der Geschwindigkeit festgestellt. Ich bin sicher, dass die verschiedenen Kommentatoren unten wissen, wovon sie sprechen und dass diese Verschlüsselungs-Chiffren möglicherweise nicht die besten sind. Es ist sehr wahrscheinlich, dass der einzige Teil dieser Antwort, der wirklich relevant ist, die Verwendung des -C Schalter, um die übertragenen Daten zu komprimieren.

25
terdon

Eines der größten Probleme beim Remote-Starten eines X-Clients ist das X-Protokoll, nicht so sehr der SSH-Overhead! Das X-Protokoll erfordert viel Ping-Pong'ing zwischen dem Client und dem Server, was die Leistung bei Remote-Anwendungen absolut beeinträchtigt.

Versuchen Sie etwas wie "x2go" (das bei Standard-Setups auch über ssh geht), Sie werden feststellen, dass Firefox im Vergleich "fliegt"!

Mehrere Distributionen bieten die x2go-Pakete sofort an, z. B. Debian-Tests oder Stable-Backports. Wenn nicht, siehe http://wiki.x2go.org/doku.php/download:start , bieten sie vorgefertigte Binärpakete/Repositorys für viele Distributionen. Sie sollten x2goclient (auf dem Computer, auf dem Sie Firefox verwenden möchten) und x2goserver (auf dem Computer, auf dem Firefox ausgeführt werden soll) installieren. Anschließend können Sie Ihre Sitzungen für einzelne X-Anwendungen von für vollständige Desktopansichten usw. konfigurieren. Die Verbindung selbst passiert über ssh. Es ist ein wirklich wunderbares Werkzeug :)

Um es zu verwenden, führen Sie "x2goclient" aus, es startet eine GUI, in der Sie eine neue Sitzung erstellen können: Sie geben den DNS-Namen des Servers, des Ports, der SSH-Daten usw. an und wählen dann den "Sitzungstyp" aus, dh wenn Sie möchten beispielsweise einen vollständigen Remote-KDE- oder GNOME-Desktop oder nur eine "einzelne Anwendung" und geben dort "Firefox" ein.

34
Ariel

Ich habe viel bessere Erfahrungen mit der Verwendung eines ssh Tunnels, um den Verkehr durch eine andere Maschine zu leiten. Es ist sehr einfach einzurichten, da Sie sowieso SSH-Zugriff haben. Geben Sie in ein Terminal auf Ihrem Computer ein

ssh -vv -ND 8080 [email protected]

Lassen Sie dieses Fenster geöffnet und beobachten Sie, wie es ausführliche Nachrichten über die durch den Tunnel fließenden Daten liefert.

Gehen Sie in firefox zu Einstellungen -> Erweitert -> Netzwerk -> Verbindung: Einstellungen.

Wählen Sie Manuelle Proxy-Konfiguration und fügen Sie ein SOCKS v5 Proxy:

 SOCKS Host:   localhost    Port 8080

Überprüfen Sie Ihre neue IP, indem Sie z. http://whatismyipaddress.com/ .

Sie können ein Firefox-Add-On wie Foxy-Proxy verwenden, um Proxys dynamisch zu wechseln.

17
Sebastian

Firefox ist über SSH so langsam, weil neuere Versionen von Firefox mehrere Instanzen zulassen. Wenn Sie Bandbreitenprobleme haben, verwenden Sie einen leichten Browser wie Dillo, und Sie werden nicht einmal die Verbindungsgeschwindigkeit bemerken.

2
Florence Taylor

Ich weiß, dass dieser Beitrag super alt ist, aber dies hat mir geholfen, Firefox über die Langsamkeit von SSH zu überwinden, indem ich Folgendes in about:config Festlegte.

gfx.xrender.enabled = true

Hinweis : Ab Firefox 47 wurde die Standardeinstellung False.

1
Eric McAlvin

Sie müssen experimentieren, um herauszufinden, was bei Ihren spezifischen Engpässen hilft.

Aktivieren der Komprimierung für mich (-C) verbesserte Reaktionsfähigkeit von unbrauchbar auf nur spürbare Verzögerung.

Die Wahl der Chiffre kann auch Auswirkungen haben, im Gegensatz zu dem, was einige Leute sagten. Sie können Personen finden, die online Benchmarks teilen, aber nicht davon ausgehen, dass Ihre Ergebnisse gleich sind. Welche Chiffre für Sie am besten geeignet ist, hängt von der Hardware ab. Für mich war meine Standard-Chiffre ([email protected]) bereits für die schnellste gebunden.

Ich habe ein schnelles Skript geschrieben, um relevante Chiffren unter etwas realistischen Bedingungen zu bewerten. Erklärungen in den Kommentaren:

#!/usr/bin/bash

# Ciphers available to you depends on the intersection of ciphers compiled 
# into your client and the ciphers compiled into your Host.
# Should be manually copied from "Ciphers:" section in your `man ssh_config`
# The script will try all ciphers specified here and will gracefully skip
# ciphers unavailable in the Host.
#ciphers=""
# Example:
ciphers="3des-cbc aes128-cbc aes192-cbc aes256-cbc aes128-ctr aes192-ctr aes256-ctr [email protected] [email protected] [email protected]"

tmp_file=tmp.bin

# Recommend to use an identity file without a passphrase.
# That way you won't have to retype the password at each iteration.
ssh_identity_file=~/.ssh/tmp_id_no_passphrase

ssh_Host="[email protected]"

# Size of test file, before encryption.
test_file_size_megabytes=8

# Only create test file if it doesn't yet exists.
# Doesn't check if relevant variables changed, so you'll have to delete
# the $tmp_file to regenerate it.
if test ! -f $tmp_file; then
  echo "Creating random data file" \
    "(size $test_file_size_megabytes MB): $tmp_file"

  # Not the same format as the ssh ciphers.
  # Can be left as is, unless this cipher is not supported by your openssl.
  tmp_file_cipher=aes-128-cbc

  # The purpose of encrypting the $tmp_file is to make it uncompressable.
  # I do not know if that is a concern in this scenario,
  # but better safe than sorry.

  dd if=/dev/zero bs=1M count=$test_file_size_megabytes \
    | openssl enc -$tmp_file_cipher -pass pass:123 \
    > $tmp_file
fi

for cipher in $ciphers ; do
  # Benchmark each $cipher multiple times
  for i in 1 2 3 ; do
    echo
    echo "Cipher: $cipher (try $i)"
    # Time piping the $tmp_file via SSH to $ssh_Host using $cipher.
    # At destination received data is discarded.
    cat $tmp_file \
      | /usr/bin/time -p \
      ssh -i $ssh_identity_file -c "$cipher" $ssh_Host 'cat > /dev/null'
  done
done

# Sample output:

# Creating random data file (size 8 MB): tmp.bin
# *** WARNING : deprecated key derivation used.                                   Using -iter or -pbkdf2 would be better.                                         8+0 records in
# 8+0 records out
# 8388608 bytes (8.4 MB, 8.0 MiB) copied, 0.0567188 s, 148 MB/s

## [redacted]

# Cipher: aes256-cbc (try 3)
# Unable to negotiate with 192.168.99.99 port 22: no matching cipher found. Their offer: [email protected],aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected]
# real 0.12
# user 0.03
# sys 0.03

# Cipher: aes128-ctr (try 1)
# real 9.68
# user 0.28
# sys 0.51

# Cipher: aes128-ctr (try 2)
# real 10.85
# user 0.26
# sys 0.29

## [redacted]

Sie können wählen, ob Sie mit einer SSH-Verbindung testen möchten, bei der sich Client und Host auf demselben Computer befinden, oder in einem realistischeren Szenario, bei dem der Host der Computer ist, von dem aus Sie die X11-Weiterleitung durchführen. Dies sollte nützlicher sein. weil die Leistung nicht nur von der Leistungsentschlüsselung des Clients abhängt, sondern auch von der des Hosts.

Das Testen mit einem Remote-Computer kann den Nachteil haben, dass Rauschen entsteht, wenn sich der Durchsatz Ihrer Internetverbindung im Verlauf des Benchmarks ändert. In diesem Fall möchten Sie möglicherweise die Häufigkeit erhöhen, mit der jede Verschlüsselung getestet wird.

Eine andere Sache, die Ihr Surfen über ssh verbessert, ist das Aktivieren des Pipelining in Firefox. Öffnen about:config und ändern network.http.pipelining zu wahr.

0
Tanath