Webdesign und Medien
comments 2

Mach SSH schneller!

In meiner Netzwerkfestplatte werkelt ein kleiner ARM-Prozessor Feroceon 88FR131 unter Debian. Er ist schnell genug für eine Shell und eine kleine Web-Oberfläche, aber zu langsam für moderne Crypto über große Datenmengen. Der SSH-Server bietet dem Client eine große Auswahl Algorithmen zur Kommunikation an und verständigt sich dann meist auf den zuverlässigsten. Bei mir blieben noch 5,6MB/s übrig, was mir definitiv zu langsam ist.

Also erstellte ich eine 400MB große Testdatei und kopierte sie mit verschiedenen Ciphern immer wieder übers Netzwerk.

$ scp -c aes256-cbc testfile 192.168.1.20:~
testfile       100%  401MB   5.1MB/s   01:19
Cipher Datendurchsatz
3des-cbc 2.5MB/s
aes128-ctr 6.1MB/s
aes192-ctr 5.4MB/s
aes256-ctr 5.0MB/s
arcfour128 11.1MB/s
blowfish-cbc 8.9MB/s
aes128-cbc 6.0MB/s
aes192-cbc 5.6MB/s
aes256-cbc 5.1MB/s
arcfour 11.1MB/s
arcfour256 11.1MB/s
cast128-cbc 8.4MB/s

Mehr als 11.1MB/s schafft das 100Mbit-Ethernet nicht. Da auch viele kleine Dateien schnell kopiert werden müssen, habe ich ein Verzeichnis mit 282 JPG-Bildern mit insgesamt 38,6MB angelegt. Beim Kopieren wurde wieder die Zeit gemessen. Mit dem voreingestellten Algorithmus dauerte es 7,4 Sekunden.

$ START=$(date +%s.%N)
  && scp -c blowfish-cbc -q test/* 192.168.1.20:~/test
  && END=$(date +%s.%N)
  && DIFF=$(echo "$END - $START" | bc)
  && echo $DIFF
5.343504576
Cipher 282 Dateien 40MB 2256 Dateien 300MB
aes128-ctr 7.4s 64s
arcfour128 4.4s 39s
blowfish-cbc 5.3s 47s
arcfour 4.4s 40s
arcfour256 4.8s 40s
cast128-cbc 5.6s 46s

Es sieht also so aus, als würden Blowfish, Arcfour und Cast das Rennen machen. Bei Arcfour sollte man arcfour256 bevorzugen. Dagegen scheint cast128 für nichts gut zu sein. Der Standard für schnelles SSH ist wohl Blowfish.

Um den Server auf Arcfour zu beschränken habe ich in der /etc/ssh/sshd_config folgende Zeile angehängt:

Ciphers arcfour256

Nach einem Neustart des SSH-Servers beträgt der Datendurchsatz statt 5.6MB/s nun 9.7MB/s. Mein Client-Notebook ist dabei nur zu wenigen Prozent ausgelastet, der Server zu 100%.

Das Einbinden der Netzwerkfestplatte geschieht übrigens nicht über Gnomes langsames und anfälliges gvfs, sondern auf Dateisystem-Ebene mit sshfs.

2 Comments

    • Thanks a lot!
      It still seems to be difficult if you have
      1) a lot of traffic
      2) a small CPU
      3) an insecure connection
      as SSH needs some calculation power.

Leave a Reply

Your email address will not be published. Required fields are marked *