Daniel's Blog

SSH-Tuning

In diesem Artikel werde ich auf einige Möglichkeiten eingehen, den Umgang mit SSH bequemer zu gestalten.

Authentifizierung mit Public-Keys

Wenn man keine Lust hat, bei jeder Anmeldung das Passwort eingeben zu müssen, kann man die Anmeldung mittels Public-Key durchführen. Dazu muss man zuerst einen Public-Key erstellen (wenn man noch keinen hat). Dies ist unter Linux sehr einfach möglich mit dem Befehl:

ssh-keygen -t rsa

Alle Fragen kann man einfach mit Enter bestätigen. Anschließend muss der Public-Key noch auf den Server kopiert werden. Dazu gibt es unter Linux den Befehl:

ssh-copy-id user@server

Man muss dann noch ein letztes Mal das Passwort eingeben und danach läuft die Authentifizierung vollautomatisch ab.

ssh_config

In der ssh_config-Datei kann man sowohl die Standardeinstellungen für einige Webseiten (oder auch für alle) verändern, als auch einen Alias einrichten für Server die man häufig benutzt. Der Pfad zur Konfigurationsdatei ist ~/.ssh/config. Wenn die Datei noch nicht existiert, kann man sie einfach anlegen.

Wenn man z.B. für alle Sub-Domains von example.com die Komprimierung einschalten möchte, dann tun das folgende Zeilen:

Host *.example.com
  Compression yes

Der zweite Verwendungszweck gestaltet sich genauso einfach:

Host foo
  HostName example.com
  User bar
  Port 1234

Nun kann man die Verbindung mit ssh foo herstellen, anstatt jedesmal ssh bar@example.com -p1234 eintippen zu müssen.

SSH-Timeouts verhindern

Wenn man längere Zeit nichts in der SSH-Shell tippt, dann reagiert die Shell nicht mehr und bricht nach einiger Zeit mit der Fehlermeldung Write failed: Broken pipe ab. Um die zu verhindern, kann man folgendes in die ssh_config-Datei eintragen:

Host *
  ServerAliveInterval 60

Nun wird alle 60 Sekunden eine Keep-Alive-Nachricht geschickt und es tritt kein Timeout mehr auf.

Ports tunneln

SSH macht es möglich einen Tunnel für bestimmte Ports aufzubauen. Dies ist z.B. nützlich, wenn man sich zu einem Rechner verbinden möchte, der in einem fremden LAN steht. Einen weiteren Einsatzzweck hab ich in einem anderen Blogpost beschrieben.

ssh -N -L2001:server-im-lan:80 user@gateway-server

Dies leitet den lokalen Port 2001 auf den Port 80 von server-im-lan um. Man kann nun durch Eingabe von http://localhost:2001/ im Browser vollkommen transparent auf den Server zugreifen, der in einem fremden LAN steht. Der gesamte Traffic wird dabei über den gateway-server getunnelt. Der Parameter -N sorgt dafür, dass keine Shell geöffnet wird. Wenn man mehrere Ports weiterleiten will, kann man den Parameter -L mit allem was dazu gehört auch mehrmals benutzen.

Wenn man eine Weiterleitung regelmäßig benötigt, lohnt es sich einen Alias in der ssh_config-Datei anzulegen. Bezogen auf obriges Beispiel würde es dann so aussehen:

Host tunnel
  HostName gateway-server
  User user
  LocalForward localhost:2001 server-im-lan:80

Die Verbindung kann dann mit einem einfachen ssh tunnel aufgebaut werden.

Dateisystem über SSH mounten

SSH bietet die Möglichkeit mittels SFTP direkt auf das Dateisystem des Servers zuzugreifen. Dazu sind keine zusätzlichen Voraussetzungen auf der Server-Seite notwendig. Auf der Client-Seite muss das Programm sshfs installiert werden:

apt-get install sshfs

Nun kann man sehr einfach ein Verzeichnis auf dem Server lokal mounten:

sshfs user@server:/remote/pfad/ /lokaler/mountpoint/

Zum unmounten dient der Befehl:

fusermount -u /lokaler/mountpoint/

eingefrorene SSH-Shell beenden

Wenn eine SSH-Shell hängt und nicht mehr auf Eingaben reagiert, lässt sie sich mit einem Enter gefolgt von ~. beenden. Weitere Escape-Sequenzen zeigt ~? an.

Quellen

Festplatten-Benchmarks mit Bonnie++

Um die Geschwindigkeit einer Festplatte zu bestimmen, gibt es unter Linux verschiedene Tools.

hdparm

Für einen einfachen Test reicht das vorinstallierte hdparm völlig aus. hdparm -tT /dev/sda gibt beispielsweise die Lesegeschwindigkeit der ersten Festplatte aus. Allerdings kann hdparm nur die Lesegeschwindigkeit bestimmen und es wird nur die Geschwindigkeit der nackten Platte (unter Umgehung des Dateisystems) gemessen.

bonnie++

Für einen Test unter realistischen Bedingungen ist daher ein anderes Tool nötig. Das Linux-Standardtool dafür ist bonnie++. Da es bei den meisten Distributionen in den Repositories enthalten ist, gestaltet sich die Installation sehr einfach:

apt-get install bonnie++

bonnie++ führt zwei Testverfahren durch. Zuerst wird eine große Datei angelegt (in der Standardeinstellung doppelt so groß wie der Arbeitsspeicher), danach werden viele kleine Dateien angelegt (in der Standardeinstellung 16.000).

Eine HTML-formatierte Ausgabe erhält man, wenn man bonnie++ mit

bonnie++ -d /pfad/zum/verzeichnis -u root -q | bon_csv2html > result.html

aufruft. Alle Dateien werden dabei in /pfad/zum/verzeichnis angelegt. Lässt man den Parameter -d weg, werden alle Dateien im aktuellen Verzeichnis angelegt. Das Ergebnis landet dann in der Datei result.html im aktuellen Verzeichnis.

Gerade bei langsamen Datenträgern kann der Test sehr lange dauern. Dann ist es notwendig die Testparameter anzupassen. Allerdings erlaubt es bonnie++ nicht, die Größe der Datei unter das doppelte des Arbeitsspeichers zu senken. Dies ist der Fall, da man sonst nur die Geschwindigkeit das Dateisystem-Caches messen würde und die Angabe der Lesegeschwindigkeit nicht stimmt. Mit einem kleinen Trick kann man bonnie++ aber dennoch zwingen nur eine kleine Datei zu schreiben:

bonnie++ -r 500M -s 1G -n 10 -d /pfad/zum/verzeichnis -u root -q | bon_csv2html > result.html

Der Parameter -r 500M gibt dabei an, dass bonnie++ von einer Arbeitsspeichergröße von 500MiB ausgehen soll. Dadurch ist es möglich die Größe der Testdatei mit -s 1G auf 1GiB zu senken. Die Lese-Werte sind dann allerdings nicht mehr zu gebrauchen. Mittels -n 10 wird eingestellt, dass bonnie++ nur 10.000 kleine Dateien anlegen soll.

Quellen

Umlaute auf englischer Tastatur

Vor kurzem hab ich mir eine Tastatur mit UK-Layout gekauft. Zum Programmieren eignet sich das Layout ausgezeichnet, nur das Fehlen der Umlaute ist ziemlich störend. Aber Linux wäre nicht Linux, wenn man das Problem nicht mit einfachen Mitteln beheben könnte ;-)

xmodmap

Alles was man tun muss, ist im Home-Verzeichnis eine Datei mit dem Namen .Xmodmap anzulegen. In diese Datei kommt dann folgendes:

keycode 30 = u U u U udiaeresis Udiaeresis
keycode 32 = o O o O odiaeresis Odiaeresis
keycode 38 = a A a A adiaeresis Adiaeresis

Aus einem mir unerklärlichen Grund, muss ich bei mir die ersten beiden Spalten doppelt angeben. Unter Umständen funktioniert bei euch also folgendes:

keycode 30 = u U udiaeresis Udiaeresis
keycode 32 = o O odiaeresis Odiaeresis
keycode 38 = a A adiaeresis Adiaeresis

Die Änderungen werden übernommen, sobald man sich ab- und wieder angemeldet hat. Alternativ kann man auch xmodmap .Xmodmap in der Konsole aufrufen.

Klammern tauschen

In diesem Zusammenhang hab ich auch gleich die eckigen Klammern [] und die normalen Klammern () getauscht, weil ich die normalen Klammern viel häufiger benötige.

keycode 18 = 9 bracketleft 9 bracketleft bracketright plusminus
keycode 19 = 0 bracketright 0 bracketright braceright degree
keycode 34 = parenleft braceleft
keycode 35 = parenright braceright

Quellen

http://wiki.ubuntuusers.de/xmodmap

Spiele für Linux

Bislang wurde das Thema Spiele für Linux von den Spieleherstellern eher stiefmütterlich behandelt und man musste meist auf Wine ausweichen. Glücklicherweise haben die Indie-Produzenten jetzt aber erkannt, dass sich mit Spielen für Linux sehr wohl Geld machen lässt ;-)

Humble Indie Bundle

Beim Humble Indie Bumble handelt es sich um eine Pay-What-You-Want-Aktion. Mit anderen Worten: Man bekommt 6 Spiele für einen Preis, den man selbst festlegt.
Folgende Spiele sind in dem Bundle enthalten:

Ich hab gleich mal zugeschlagen und mir das ganze Bundle für 10$ gekauft.

Die meisten Spiele hab ich noch nicht installiert, aber vermutlich werd ich dem einen oder anderen Spiel noch einen eigenen Artikel widmen.

Leider ist die Aktion inzwischen beendet.
Allerdings wurde entschieden, den Quelltext von vier der Spiele zu veröffentlichen, nachdem die Spielehersteller mit dieser Aktion 1,2 Millionen Dollar eingenommen haben.

Osmos

Ein anderes sehr interessantes Spiel für Linux ist Osmos. Auch dieses Spiel lässt sich online kaufen für nur 10$.

Spielziel ist mit einem Einzeller andere (kleinere) Einzeller zu absorbieren und so zum größten Organismus zu werden. Um sich fortzubewegen muss man einen Teil seiner Masse abstoßen und beschleunigt so (laut Impulserhaltungssatz). Die anderen Einzeller treiben nur dumm herum, allerdings muss man aufpassen, dass man nicht von einem größeren Organismus absorbiert wird. In späteren Leveln, kommen dann noch andere intelligente Einzeller dazu, die einem das Leben schwer machen. Außerdem gibt es Level, in denen man um ein Gravitationszentrum kreist und durch vorsichtige Bewegungen seine Umlaufbahn ändern muss.

Der Schwierigkeitsgrad der Level geht von sehr entspannt, bis extrem schwierig, allerdings kann man die Level jeweils mit zufälligen Startaufstellungen nochmal spielen, so kommt keine Langeweile auf.

Die Grafik ist sehr minimalistisch gehalten, sieht aber sehr schön aus. Im Hintergrund läuft sehr schöne und wunderbar passende Ambient-Elektro-Musik.

Insgesamt ergibt das ein Spiel, das man sich unbedingt kaufen sollte ;-)