Thema: Ubuntu

OpenSSH und Putty Schlüssel Dateien

07. November 2011

OpenSSH und Putty Schlüssel Dateien
Eine Secure Shell oder SSH Verbindung herzustellen geschieht normalerweise einfach über den Terminal. In meinem Fall gab es da aber noch eine Schlüssel-Datei im PuTTY eigenen PPK Format. Sicher, es gibt PuTTY auch für Unix Systeme, aber warum den Terminal wechseln, wenn es eigentlich gar nicht nötig ist. Aber leider kann openSSH nicht mit den Putty eigenen Schlüssel-Dateien umgehen. Wie man das Ganze trotzdem zum Laufen kriegt – eine kurze Anleitung.

Zunächst muss man den Schlüssel konvertieren, dass geschieht mit dem Programm PuTTYgen. Unter Ubuntu installiert man das wie folgt:

$ sudo apt-get install putty-tools

Dann konvertiert man den Schlüssel, und speichert diesen unter dem .ssh-Ordner im Home-Verzeichnis ab.

cd /path/to/orginalkey/
puttygen orginalkey.ppk -O private-openssh -o mynewkeyfile.sec
mv mynewkeyfile.sec ~/.ssh/
chmod 600 ~/.ssh/mynewkeyfile.sec

Damit die Schlüssel auch akzeptiert werden, gelten bestimmte Zugriffsrechte für das .ssh Verzeichnis (700) und die darin liegenden Dateien (600). In dieser Form funktioniert der Schlüssel, und man kann sich verbinden:

ssh MyUserName@hostname.de -i ~/.ssh/mynewkeyfile.sec

Soweit so gut, nun kann man den Komfort noch erhöhen. Dafür legt man eine config Datei im .ssh Verzeichnis an, in dem man die Verbindungsparameter dauerhaft speichert:

sudo gedit ~/.ssh/config

Eine genaue Anleitung findet man auf der entsprechenden man-page von ssh_config. Hier ein einfaches Beispiel:

Host mySSHConnection
    HostName 123.456.789.0
    Port 980
    User MyUserName
    IdentityFile ~/.ssh/mynewkeyfile.sec
    DynamicForward 1234

Die letzte Anweisung emuliert per SSH einen SOCKS 5-Proxy, der in meinem Falle ebenfalls nötig war. Man muss in seinem Browser lediglich die Verbindung entsprechend anpassen, das geschieht im Firefox bspw. über Bearbeiten > Netzwerk > Einstellungen. Dort die Angabe für Manuelle Proxy Konfiguration, als SOCKS Host die 127.0.0.1 und als Port den Wert des DynamicForward eintragen. Jetzt kann man sich im Terminal über den folgenden Befehl per SSH mit dem Server verbinden:

ssh mySSHConnection

Wer auf der Unity Oberfläche von Ubuntu unterwegs ist, kann sich noch folgende Launcher Erweiterung ansehen: Gnome-Terminal Quicklist (auto-update from ssh config), damit kann man die in der Konfiguration gespeicherten SSH Verbindungen direkt in seinen Terminal Launcher integrieren.

Eine Lösung für die gleiche Problematik auf einem Mac findet man unter leadingedgescripts.co.uk.