Administration BSD IT Linux

SSH: Public Key Authentication

Hin- und wieder ist es sinnvoll oder zumindest praktisch, wenn ein Rechner auf den anderen automatisch ohne Benutzerinteraktion zugreifen kann via SSH z. B.: um mithilfe von Rsync Daten zu Backupzwecken synchron halten zu können.

Auch wenn es sehr verführerrisch erscheint, sollte man unter keinen Umständen root-zu-root Vertrauen zwischen 2 Rechnern aufbauen, denn wird einer kompromittiert, hat der Angreifer automatisch auch Zugriffsrechte auf den anderen Host und somit Zugriff auf z. B. den Backupdatenbestand, was dann wiederum für den Angreifer sehr verführerrisch ist

Ich gehe in diesem Kurztutorial davon aus, dass auf beiden Seiten OpenSSH benutzt wird, wie ihn die meisten Linux-Derivate standardmäßig mitliefern und sowohl SSHv1 und SSHv2 beherrscht, wovon SSHv2 nätürlich die präferierte Wahl darstellt. Das .ssh Verzeichnis sollte sich normalerweise bereits im Home-Verzeichnis jedes Users befinden, ansonsten wird es mit den ersten 2 Zeilen angelegt und der Zugriff darauf nur dem betreffenden User erlaubt.

Der private Key kann selbstverständlich auch zusätzlich noch mit einer passphrase geschützt werden, was wir hier aber nicht machen wollen, da der Rechner ja automatisch (via Script etc.) Zugriff erlangen soll, somit lassen wir das Feld bei der Eingabe einfach leer.

client$ mkdir ~/.ssh
client$ chmod 700 ~/.ssh
client$ ssh-keygen -q -f ~/.ssh/id_rsa -t rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

Damit wäre die Key-Erstellung soweit fertig und es sind die beiden Dateien id_rsa und id_rsa.pub entstanden. Jetzt muss der Public Key (.pub) auf das Zielsystem transferiert werden. Da dieser (ohne Passphrase) vergleichbar mit dem Passwort ist, also alleine den Zugriff auf das Zielsystem ermöglicht, sollte dieser natürlich über einen sicheren Kanal – z. B. scp oder WinSCP – und keinesfalls über FTP o. ä. übertragen werden.

Auf dem Zielsystem den Inhalt der Datei id_rsa.pub nach ~/.ssh/authorized_keys kopieren. Dabei jeden Schlüssel in eine eigene Zeile:

server$ mkdir ~/.ssh
server$ chmod 700 ~/.ssh
server$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
server$ chmod 600 ~/.ssh/authorized_keys
server$ rm ~/id_rsa.pub

Auch hierbei wieder auf alleinige Leserechte für den bestimmten User achten, danach, kann id_rsa.pub wieder gelöscht werden.

Für etwas mehr pseudo-Sicherheit, kann man vor den Schlüssel in der authorized_keys Datei noch angeben, von wo man sich hiermit verbinden darf:

from="*.example.org"

In der from= Zeile darf eine IP-Adresse oder ein Hostname angegeben werden. Wildcards werden auch ausgewertet.

 

 

Autor

Seit Kindheitstagen ist der Computer sein Begleiter. Was mit Linux anfing, wurde 2005 ein/e Beruf/ung, die weit über den Arbeitsplatz hinausgeht. Durch stetige Weiterentwicklung fasste er auch im *BSD Segment Fuß und bietet mittlerweile professionelle Lösungen im Bereich Hosting, Networking und Infrastruktur an. Als Ausgleich beschäftigt er sich neben Computerspielen mit der Fotografie.

2 Kommentare Neuen Kommentar hinzufügen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.