−Inhaltsverzeichnis
SSH mit Public Key-Authentifizierung
Einleitung
SSH-Verbindungen über den Uni-Server login.uni-freiburg.de
(beispielsweise zum Zugriff auf das Homeverzeichnis) verwenden normalerweise eine klassische Authentifizierung mit Benutzernamen (= Benutzerkennung) und Passwort. Für die meisten Anwendungen reicht dies aus, doch in einem Fall entsteht ein Problem: Will man den Zugriff auf diesen Server automatisieren – beispielsweise um automatisch Backups durchzuführen –, so muss man sein Uni-Account-Passwort auf dem heimischen Rechner im Klartext hinterlegen. Dass das keine gute Idee ist, dürfte offensichtlich sein.
Public Key-Authentifizierung
Glücklicherweise beherrscht SSH noch eine andere Möglichkeit, sich zu authentifizieren: sogenannte Schlüsselpaare mit Private und Public Key. Grob gesagt handelt es sich dabei um zwei sehr lange Zeichenketten, die als 'Identität' eines Anwenders fungieren. Der Public Key ist dabei, wie der Name schon sagt, öffentlich und kann auf jedem beliebigen Server, mit dem man sich verbinden will, platziert werden. Den Private Key muss man dagegen so geheim halten wie ein Passwort, deswegen ist unbedingt sicherzustellen, dass kein Anderer auf diesen zugreifen kann. Weitere Informationen zur Funktionsweise der Authentifizierung mit Schlüsselpaaren finden sich beispielsweise auf Wikipedia oder ausführlicher in Johannes Frankens SSH-Artikel.
Schlüsselpaar generieren
Die Erzeugung eines Schlüsselpaars übernimmt das Kommando ssh-keygen
. Ohne Parameter aufgerufen, fragt es nach einigen Daten, die entsprechend einzugeben sind:
$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/jannis/.ssh/id_rsa): /home/jannis/.ssh/uni # hier möglichst aussagekräftigen Dateinamen wählen Enter passphrase (empty for no passphrase): # Hier <Enter> drücken Enter same passphrase again: # hier ebenfalls
Danach sollte folgende Erfolgsmeldung ausgegeben werden:
Your identification has been saved in /home/jannis/.ssh/uni. Your public key has been saved in /home/jannis/.ssh/uni.pub.
Den Rest der Ausgabe können Sie ignorieren.
uni
, so kann er sich ebenso wie Sie ohne Passwortabfrage auf dem Uni-Server einloggen. Schützen Sie diese Datei also so gut wie irgend möglich!
Öffentlichen Schlüssel hochladen
Nun müssen Sie den öffentlichen Schlüssel auf dem Server ablegen, damit der Ihre Identität überprüfen kann. Dazu bietet sich beispielsweise das Programm sftp
an. (Möglicherweise ist dieses bei Ihnen nicht vorinstalliert, es sollte sich aber in den Paketquellen finden lassen.)
Um sich mit dem Server zu verbinden, gehen Sie analog zu SSH vor, wobei UserID
durch Ihre Benutzerkennung zu ersetzen ist:
$ sftp UserID@login.uni-freiburg.de $ UserID@login.uni-freiburg.de's password: # hier Uni-Account-Passwort eingeben $ sftp>
Nun sehen Sie die sftp-Eingabeaufforderung. Wechseln Sie hier lokal in das Verzeichnis, in dem sich der generierte Public Key befindet:
sftp> lcd /home/jannis/.ssh/
Nun wechseln Sie auf dem Server in das Verzeichnis, in dem der Schlüssel abgelegt werden soll:
sftp> cd /home/UserID/.ssh # UserID wieder ersetzen
Und schließlich können Sie ihn hochladen und die sftp-Sitzung schließen.
.pub
hochladen, nicht die Datei ohne Endung!
sftp> put uni.pub Uploading uni.pub to /home/UserID/.ssh/uni.pub uni.pub 100% 402 0.4KB/s 00:01 sftp> exit
Öffentlichen Schlüssel registrieren
Sie sind fast am Ziel. Verbinden Sie sich nun per SSH mit dem Login-Server und wechseln Sie in das versteckte Verzeichnis /home/UserID/.ssh
. Dort müsste sich nun der Public Key uni.pub
finden.
Prüfen Sie, ob im gleichen Verzeichnis die Datei authorized_keys
existiert. Normalerweise sollte das nicht der Fall sein.
Wenn authorized_keys existiert, kopieren Sie den Public Key in die Datei hinein:
$ cat uni.pub >> authorized_keys # wichtig ist das ">>" statt ">"!
Wenn authorized_keys nicht existiert, benennen Sie uni.pub
einfach in authorized_keys
um:
$ mv uni.pub authorized_keys
authorized_keys
an und löschen Sie die Schlüsseldatei.
$ chmod 660 authorized_keys $ rm uni.pub
Automatisierten Login verwenden
Nun können Sie sich automatisch auf Ihrem Uni-Server einloggen. Das Kommando hierzu lautet (mit auf Ihr System angepasstem Pfad zum Schlüssel):
$ ssh -i /home/jannis/.ssh/uni UserID@login.uni-freiburg.de
Dieses können Sie nun in beliebigen Skripten nutzen um beispielsweise Backups zu erstellen oder Prozesse zu starten.