Wie update ich die SSH?

Vorgeschichte

Da in letzter Zeit ja die eine oder andere Sicherheitslücke in OpenSSH / OpenSSL gefunden wurde, habe ich am Freitag doch mal auf meinem Linux-Router den Kram neukompiliert - und dabei so ziemlich alles falsch gemacht, was man nur falsch machen kann. Aber der Reihe nach:

Es handelt sich um einen Rechner, der ständig eingeschaltet ist, und darum möglichst leise sein soll. Daher ist er so konfiguriert, dass er zu schreibende Daten nur alle 24 Stunden auf die Festplatte schreibt, davor werden sie im Ram gecached. Selbstredend hat er keine Tastatur, und keinen Bildschirm und wird ferngewartet ...

Als ich am besagten Tag OpenSSL und OpenSSH kompiliert und installiert hatte, wollte ich den Instruktionen, die im zweiten Teil zusammengefasst sind, nicht Folge leisten und stattdessen einfach /sbin/init.d/sshd stop; /sbin/init.d/sshd start eingeben - nach dem Motto mal schauen was passiert. Erster böser Fehler. Natürlich starb der ssh-Dämon, mit ihm die Shell, und der ssh-Dämon wurde damit nicht neugestartet. Also war der Rechner nicht erreichbar. Darum die Reset-Taste gedrückt. Zweiter böser Fehler. Durch das Cachen im Ram waren die Daten nicht oder nur zum Teil auf die Festplatte geschrieben worden, d.h., nach dem obligatorischen fsck war der alte ssh-Dämon schon überschrieben, der neue aber noch nicht da, und der Fernzugriff über ssh war darum nicht mehr möglich. Die Folge war, dass ich nach langer Zeit wieder Krabbelei hatte, um Tastatur und Bildschirm anzuschließen und an der Konsole den Schlamassel wieder in Ordnung zu bringen. Grml.

Update des SSH über eine SSH-Shell: Eine Anleitung!

Also: So geht es richtig: Nachdem man die SSH kompiliert, sich vom grundlegenden Funktionieren überzeugt, und dann mit make install installiert hat, auf dem Server per Hand (nicht über die rc.d-Startscripte) einen zweiten ssh-Dämon auf einem alternativen Port starten: /usr/sbin/sshd -p 777, besser allerdings den richtigen sshd-Befehl in den rc-Startscripten raussuchen und den Aufruf, der dort steht, mit der zusätzlichen Port-Angabe durchführen. Als nächstes vom Client eine neue ssh-Shell über diesem Port öffnen (bei allen ssh-clients kann man den Port auswählen, mit einem Kommandozeilen-ssh etwa ssh -p 777 RECHNER). In dieser Shell auf dem Server jetzt den ursprünglichen ssh-Dämon suchen (das ist der ältere, ps -ef | grep sshd sollte zum Finden genügen) und abschießen (kill -1 SSHD-PID). Jetzt auf dem Server über die verbliebende Shell den ssh-Dämon auf dem normalen Port wieder starten (d.h. mit dem gleichen Befehl wie in den rc-Startscripten, zur Sicherheit aber nicht das rc-Startscript selber verwenden!). Wiederrum vom Client eine neue ssh-Shell auf dem normalen Port aufmachen und, wenn alles geklappt hat, über diese Shell den ssh-Dämon auf dem alternativen Port abschießen. Fertig.