Das kleine SSH-Tutorial (Teil 3)- Konvertierung und Benutzung von Linux SSH-Schlüsseln unter Windows

Wie man SSH-Schlüssel unter Linux-Betriebssystemen erzeugt oder einsetzt wird, habe ich bereits hier beschrieben. Der heutige Artikel baut auf dem vorhergehenden Artikel auf und beschreibt, wie ein in Linux erzeugter SSH-Key unter Windows benutzt werden kann.

Zur Benutzung eines Linux-SSH-Keys braucht man erstens ein Tool, mit dem der Schlüssel konvertiert werden kann und zweitens einen SSH-Agenten unter Windows. Beide Tools werden vom Putty-Toolset zur Verfügung gestellt und können dort auch heruntergeladen werden. Es gibt sicherlich noch andere kostenlose Toolsets, die das gleiche leisten, ich verwende aber seit vielen Jahren Putty und bin damit “glücklich”. (Jaja, … man kann sich immer nach etwas neuem umsehen. Mache ich auch gerne, aber das Putty-Toolset finde ich so gut, dass ich einfach keinen Grund für Experimente sehe.)

Der Konverter nennt sich puttygen.exe. Wie der Name andeutet, kann Puttygen nicht nur Linux-Schlüssel konvertieren, sondern auch neue Schlüssel unter Windows erzeugen. Die Konvertierung ist ziemlich einfach.

  1. Puttygen starten
  2. Zu importierenden SSH-Schlüssel (den privaten Teil!) landen: “Conversion” –> “Import Key”
  3. Falls der Schlüssel durch ein Passwort geschützt ist, das Passwort eingeben
  4. Die Konvertierung an sich ist jetzt fertig. Allerdings muss der konvertierte Schlüssel noch gespeichert werden: “Save private key” + Dateiname eingeben.
  5. Fertig

Der in Linux erzeugte Schlüssel ist nun in ein Format konvertiert worden, das der Putty SSH-Agent verarbeiten kann.

Der SSH-Agent unter Windows nennt sich pageant.exe (Ja: pageant und nicht wie zu erwarten wäre pagent – wohl ein Wortspiel das sich mir nicht so recht erschließt). Das Laden eines Key ist ebenfalls straigt forward:

  1. Pageant starten. Wie es sich für einen richtigen Agenten gehört, platziert er sich diskret und fast unsichtbar in der Taskleiste im Tray-Bereich und hat einen Hut auf dem Kopf. ;-)
  2. Rechtsklick auf das Icon und “Add Key” wählen.
  3. Zum Key navigieren und diesen Auswählen
  4. Falls der Schlüssel durch ein Passwort geschützt ist, das Passwort eingeben
  5. Fertig

Öffnet man nur durch Rechtsklick –> “View Keys” das Übersichtsfensterchen, so sieht man, dass der importierte Key verfügbar ist.

Verbindet man sich ab diesem Zeitpunkt über Putty, Winscp oder einem sonstigen SSH-Clienten zu einem SSH-Server auf dem irgendwann der öffentliche Teil des SSH-Schlüsselpaars abgelegt wurde, wird man feststellen, dass man kein Passwort mehr eintippen muss, um eingeloggt zu werden.

Tutorial: X-Forwarding mit Putty unter Windows

Das ist der letzte Teil meiner kleinen X-Forwarding “Serie”. Heute geht es darum, wie die graphische Ausgabe eines Linux-Systems auf den X-Server eines Windows-Rechners umleitet werden kann. Diese Anleitung setzt natürlich einen installierten und gestarteten X-Server voraus. Wie das geht, steht hier.

Ein guter und zudem kostenloser SSH-Client unter Windows ist Putty. Putty kann von dieser Seite herunter geladen werden.

putty

Nachdem in Putty der Hostname des Rechners und der Login-Name (user@hostname) eingegeben wurden, öffnet man die Rubrik “X11″ …

cyg5

… und aktiviert dort das “X11 Forwarding”. Das war es auch schon fast. Nach einem Klick auf den “Open” Knopf in der Rubrik “Session” wird man mit dem gewünschten Rechner verbunden. Startet man dort ein Programm, das das X-Window System benutzt (z.B. Gimp) öffnen sich die entsprechenden Fenster auf dem lokalen Rechner.

Die übertragenen Datenmengen sind übrigens ganz enorm. Wer dieses Feature über das Internet nutzt (geht ja problemlos) braucht DSL und am besten eine Flatrate *g*

Hungrig geworden? Keine Lust mehr auf Computer??
Auch Kochrezepte und vieles mehr finden sich im Sammelsurium.

Tutorial: X-Server unter Windows installieren

Vor ein paar Wochen habe ich einen kleinen Artikel über X-Forwarding unter Linux geschrieben. Witzigerweise scheinen sich dafür mehr Leute zu interessieren, als ich gedacht habe. Daher kommt jetzt noch etwas zusätzliche Information hinterher.

In diesem kleinen Tutorial soll es also darum gehen, wie man einen X-Server unter Windows installiert. In einem weiteren Teil, den ich in den nächsten Tagen nachreiche, geht es darum, wie die graphische Ausgabe eines Linux-Systems auf den X-Server eines Windows-Rechner umleitet werden kann (X-Forwarding unter Windows mit Putty).

X-Server installieren:

Das Zauberwort für Linux-Komponenten unter Windows heißt Cygwin. Cygwin (gesprochen sig-win, nicht züg-win) kann (Teile von) Linux unter Windows emulieren. Dazu gehört unter anderem das X-Window System, an dem wir jetzt gerade interessiert sind. Die Installation der Cygwin X-Windows Komponenten ist ziemlich einfach: Von der Cygwin-Homepage lädt man sich zunächt den Cygwin-Installer herunter. Dieser wird gestartet und nach einigen selbsterklärenden Klicks landet man auf dem Komponenten-Auswahlmenü.

cyg1

Im Grunde genommen kann man alle voreingestellten Optionen so lassen, wie sie sind und einfach auf “Weiter” klicken. Dann würde aber mehr oder weniger das ganze Cygwin-System installiert werden. Ein Großteil der Komponenten ist (in diesem Fall) überflüssig und nimmt zudem mehrere hundert MB auf der Festplatte weg und der Download dauert “stunden”… Das muss nicht sein. Um X unter Windows nutzen zu können reicht es aus “X11″ zu installieren (Install) und alle anderen Komponenten zu überspringen (Default).

Nach einem Klick auf “Weiter” meckert der Installer, dass er noch einige andere Komponenten braucht, die Meldung wird bestätigt und schon werden die benötigten Komponenten aus dem Netz geladen und installiert.

Nach abgeschlossener Installation findet sich auf dem Desktop ein Cygwin Icon. Ein Klick darauf öffnet eine Cygwin-Shell. Über diese lässt sich der X-Server starten. Das Kommando lautet ganz einfach

startx

cyg2

Nachdem ein paar Zeilen mehr oder weniger sinnvoller Informationen auf die Shell geschrieben wurden, öffnet sich ein Xterm-Fenster und in der Taskleiste wird das X-Symbol angezeigt. Der X-Server wurde somit erfolgreich gestartet und bereit.

Hungrig geworden? Keine Lust mehr auf Computer??
Auch Kochrezepte und vieles mehr finden sich im Sammelsurium.

Das kleine SSH-Tutorial – Teil 2: SSH-Agent starten

Vor einiger Zeit habe ich hier beschrieben, wie man sich über SSH auf einem anderen Rechner einloggen kann ohne ein Passwort einzugeben. Grob zusammengefasst braucht man dazu zunächst ein asymmetrisches Schlüsselpaar. Der öffentliche Teil des Schlüssels wird auf den Remote Client übertragen und diesem bekannt gemacht. Der private Schlüssel bleibt auf dem Local Client und wird dem ssh-agent, einer Software, die mittels des privaten Schlüssels die Authentifizierung übernimmt, per Befehl ssh-add bekannt gemacht.

Was aber, wenn man ssh-add eingibt und

Could not open a connection to your authentication agent.

erhält? In diesem Fall ist der SSH-Agent nicht gestartet. Einfach über ssh-agent lässt sich das Ding leider nicht wirklich starten. Wäre ja auch zu einfach. Versucht man das, erhält man zwar eine Ausgabe wie z.B.

setenv SSH_AUTH_SOCK /tmp/ssh-6b8m2hgTes/agent.94372;
setenv SSH_AGENT_PID 94373;
echo Agent pid 94373;

aber die benötigten Umgebungsvariablen SSH_AGENT_PID und SSH_AUTH_SOCK werden nicht richtig gesetzt. Das kann man durch ein env | grep SSH prüfen. Der Befehl spuckt folgendes aus:

SSH_CLIENT=87.165.26.xxx 64796 22
SSH_CONNECTION=87.165.26.xxx 64796 1xx.2.11.xxx 22
SSH_TTY=/dev/ttyp4

Von SSH_AGENT_PID und SSH_AUTH_SOCK keine Spur.

Richtig macht man es so: ssh-agent /bin/bash. Dabei wird eine neue Shell in der Shell (Subshell) erzeugt und dort die nötigen Umgebungsvariablen gesetzt. Gibt man wieder env | grep SSH ein, erhält man diesmal

SSH_AGENT_PID=94418
SSH_CLIENT=87.165.26.xxx 64796 22
SSH_TTY=/dev/ttyp4
SSH_AUTH_SOCK=/tmp/ssh-v14RRydamk/agent.94417
SSH_CONNECTION=87.165.26.xxx 64796 1xx.2.11.xxx 22

Wunderbar! Noch ein ssh-add, gefolgt vom Passwort des privaten Schlüssels und fertig.

X-Forwarding mit SSH unter Linux

Das X Window System (auch: X Version 11, X11, X, aber nicht X-Windows) ist eine Sammlung von Protokollen, Computerprogrammen und Standards zur Ansteuerung grafischer Bildschirme im allgemeinen und zur Anzeige einer grafischen Benutzungsoberfläche, vor allem unter Linux- und Unix-Systemen. Das X Window System arbeitet auf Basis der Client-Server-Technik sowohl lokal wie auch netzwerktransparent.

(Quelle: Wiki)

Soll heißen: Eine Anwendung, der sog. X-Client, sendet die Daten, die auf dem Bildschirm dargestellt werden sollen über “normale” Netzwerk-Kommunikation an den X-Server. Dieser X-Server pinselt daraufhin die Daten auf den Schirm. Das Schöne daran ist, dass die Kommunikation “umgebogen” und auf einen anderen Rechner umgeleitet und dort auch angezeigt werden kann, falls dort ein X-Server läuft.

Der Befehl auf dem lokalen Linux-Rechner lautet ganz simpel:

ssh -X user@zielrechner

Daraufhin authentifiziert man sich wie gewohnt über sein Passwort oder wie hier beschrieben , startet das Programm, welches man benötigt (z.B. xterm) und erhält die Bildschirmausgabe auf dem lokalen Rechner.

Das kleine SSH-Tutorial – Login ohne Passwort

SSH (Secure Shell) dient unter anderem dazu, sich über eine verschlüsselte Verbindung auf der Konsole eines anderen Rechners einzuloggen. “Tunneling” und sicherer Dateitransfer (SCP, Secure Copy) sind zwei weitere wichtige Anwendungsgebiete.

Zu Beginn jeder SSH Session steht so sicher wie das Amen in der Kirche die Authentifizierung des Users bei dem Rechner, mit dem er die Session aufbauen möchte. Normalerweise geschieht dies über den Benutzernamen und ein Passwort. Den Benutzernamen kann man sich meist ja gerade noch merken, aber die ständige Eintipperei von Passwörtern kann auf Dauer wirklich lästig werden – v.a. dann, wenn man laufend auf vielen Maschinen arbeiten muss. Es ist daher eine wirklich lohnende Alternative sich einmal die Mühe zu machen sich einen Schlüssel zu basteln, den man dann zur Authentifizierung für alle seine Rechnern einsetzten kann.

Step 1: Schlüssel(paar) erstellen:
Das dazu benötigte Kommando heißt “ssh-keygen”. ssh-keygen sollte auf jedem vernünftigen Linux-Rechner verfügbar sein. Da wir ein RSA-Schlüsselpaar wollen, teilen wir ssh-keygen dies über den Schalter -t rsa mit.

ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/username/.ssh/id_rsa):ENTER
Enter passphrase (empty for no passphrase):PASSWORT, ENTER
Enter same passphrase again:
PASSWORT, ENTER
Your identification has been saved in /home/username/.ssh/id_rsa.
Your public key has been saved in /home/username/.ssh/id_rsa.pub.
The key fingerprint is:
8c:ba:72:21:9a:38:a1:6e:bf:9f:56:d5:69:ac:5b:51

Wir werden oben gefragt, wohin das Schlüsselpaar gespeichert werden soll. Falls kein anderer Pfad als der vorgeschlagene gewünscht ist, einfach Enter drücken. Danach wird die Frage nach einem Passwort für den Schlüssel gestellt. Einfach eines eingeben (Ja: Wir brauchen ein Passwort für den Schlüssel! Ich höre entsetzte Schreie. “Wir wollten doch kein Passwort mehr haben”. Abwarten! Step 3 erklärt wie wir um das Schlüssel-Passwort herum kommen.)
Das erzeugte Schlüsselpaar landet übrigens, falls wir keinen anderen Pfad vorgeben, im Verzeichnis ~/.ssh.
id_rsa ist hierbei der private Schlüssel, id_rsa.pub ist der öffentliche Schlüssel. Ein Sichern des Schlüssels auf USB-Stick, CD, Bierdeckel oder was auch immer ist eine gute Idee.

Step 2: Schlüssel beim Rechner eintragen.
Als nächstes muss dem Rechner, den wir benutzen wollen, der Schlüssel bekannt gemacht werden, den wir eben erzeugt haben. Dies geschieht dadurch, dass der öffentliche Teil des Schlüssels in eine Datei mit erlaubten Schlüsseln auf dem Rechner kopiert wird. Diese Datei liegt ebenfalls in dem o.g. Verzeichnis und heißt authorized_keys.Man kann das von Hand machen, einfacher ist es aber den Befehl ssh-copy-id zu benutzen. Der Schalter -i und der Pfad zum öffentlichen Schlüssel teilt ssh-copy-id mit, welcher Schlüssel eingetragen werden soll. Dieser Schritt ist ebenfalls einmalig, muss aber natürlich für alle Rechner durchgeführt werden, auf denen wir uns mit dem Schlüssel authentifizieren wollen!

ssh-copy-id -i ~/.ssh/id_rsa.pub username@host
10
Password:PASSWORT, ENTER
Now try logging into the machine, with “ssh ‘username@host’”, and check in:

.ssh/authorized_keys

to make sure we haven’t added extra keys that you weren’t expecting.

Achtung: oben ist natürlich das Benutzer-Passwort gemeint! Nicht das Schlüssel-Passwort von dem Schlüssel, den wir eintragen wollen. Der Rechner weiß somit nach Eingabe des Benutzer-Passworts, dass der neue Schlüssel einem Benutzer gehört, der tatsächlich autorisiert ist, auf den Rechner zuzugreifen.

Step 3: Endlich Passwortfrei einloggen:
Im letzten Schritt teilen wir dem ssh-agent (das ist ein Dienst, welcher für den Benutzer eine Autorisierung durchführt) mit, welchen Schlüssel er benutzen soll. Dies geschieht durch ssh-add.

ssh-add ENTER
Enter passphrase for /home/username/.ssh/id_rsa:PASSWORT, ENTER
Identity added: /home/username/.ssh/id_rsa (/home/username/.ssh/id_rsa)

Fertig. Step 3 muss übrigens jedes Mal ausgeführt werden, nachdem wir unseren eigenen Rechner neu gestartet haben!

Nun genügt ein schnödes

ssh username@host

und wir sind eingeloggt. Ganz ohne Passwort, versteht sich!

Hungrig geworden? Keine Lust mehr auf Computer??
Auch Kochrezepte und vieles mehr finden sich im Sammelsurium.