Communardo Software GmbH, Kleiststraße 10 a, D-01129 Dresden

Tunnel mit ssh - Teil 1 ssh ohne Passwort

In eini­gen weni­gen Fällen ist erwünscht oder sogar erfor­der­lich, dass man sich auf eine fremde Maschine per ssh ohne Passwortabfrage ein­loggt. Denkbare Anwendungsfälle sind der Einsatz in Shellskripten oder wie hier näher erläu­tert, der Aufbau eines Tunnels über ssh, um z.B. ein unge­schütz­tes Protokoll über das Internet von einer ent­fern­ten Maschine auf eine lokale Maschine zu Verfügung zu stel­len. Beispielhaft werde ich in den bei­den Teilen schil­dern, wie man PostgreSQL von einer gehos­te­ten Maschine ins lokale Netzwerk bekommt.

In einem ers­ten Schritt gene­rie­ren wir uns einen pas­sen­den Schlüssel mit dem Kommando ssh-keygen. Wir haben die Auswahl unter RSA-Schlüsseln mit einer Länge von 768 bis 2048 bits und einem DSA-Schlüssel mit genau 1024 bits. Bei RSA-Schlüsseln wird eine Länge von 2048 bits als aus­rei­chend sicher angenommen.

ssh-keygen -t rsa -b 2048

ssh-keygen -t dsa

Die Frage nach dem Speicherort kann man in den meis­ten Fällen bestä­ti­gen, im Normalfall unter ~/.ssh/id_dsa oder id_rsa. Braucht man mehr als einen Standardschlüssel, gibt man ein­fach einen ande­ren Namen ein. Die Frage nach einem Passwort und des­sen Wiederholung las­sen wir leer. Nun müs­sen wir den öffent­li­chen Teil des Schlüssels auf den Remothost instal­lie­ren. Auch hier bringt Linux gleich die pas­sen­den Tools mit:

ssh-copy-id -i ~/.ssh/id_dsa.pub user@remotehost

Werden mehere Schlüssel für unter­schied­li­che Accounts/Maschinen gebraucht, ergänzt man die ~/.ssh/config um fol­gende Einträge:

Host remotehost
Port 22
IdentityFile ~/.ssh/<key>

Da ich ein Login mit einem unge­si­cher­ten Key aus Sicherheitsbedenken ableh­nen muss, zeige ich einen eher unbach­te­ten Weg, den so gewon­nen Zugang soweit ein­zu­schrän­ken, dass nur die Ausführung eines Kommandos erlaubt wird. Man ergänzt auf dem Remotehost im Homeverzeichnis des users die .ssh/authorized_keys die neu erstellte Zeile, die je nach Art des erstell­ten Schlüssels mit ssh-rsa für einen RSA-Key bzw. mit ssh-dss für einen DSA-Key beginnt um z.B. den Eintrag:

command="/usr/bin/sleep 1800", ssh-dss ...

Jetzt darf der Besitzer des Schlüssel nur noch /usr/bin/sleep 1800 auf dem Remotehost aus­füh­ren. Für unsere Zwecke des Tunnelbaus ideale Voraussetzungen…

16. Januar 2008

Pin It on Pinterest