SSH ohne Passwort Authentifizierung

Automatisiere SSH-Kommunikation, bsp. für Datei-Synchronisation (s. Rsync – Synchronisation leicht gemacht) kann ohne weiteres Zutun nicht automatisch ablaufen. Um auch die Authentifizierung zu automatisieren, bedarf es eines öffentlichen Schlüssels (Public Key)

HINWEIS:

Passwortlose Authentifizierung bürgt Gefahren, hier zwei Szenarien.
1. Ein Angreifer erlangt Zugang zum Zielhost und kann in einem fremden Account in die Datei ~/.ssh/authorized_keys schreiben.
2. Ein Angreifer hat Zugriff auf den Quellhost und dessen Dateien ~/.ssh/id_dsa oder ~/.ssh/id_rsa. Beide Dateien sind ausserdem nicht passwortgeschuetzt.

Wer die Gefahren ausschliessen kann, sollte weiterlesen.

Schritt 1: Schlüssel mit ssh-keygen generieren

Nach Ausführung von

$ ssh-keygen -t dsa

auf dem Quellhost (Ort und Passwort leer lassen und mit Return bestätigen), werden in $HOME/.ssh/ die Dateien ~/.ssh/id_dsa und ~/.ssh/id_dsa.pub erzeugt.

Schritt 2: Public Key auf Zielhost übertragen

Hier führen viele Wege zum Ziel. Der Inhalt der erzeugten Datei ~/.ssh/id_dsa.pub muß an die .ssh/authorized_keys des Zielhosts angehangen werden. Ob mit cat, ssh-copy-id oder anderen Übertragungsmöglichkeiten gearbeitet wird, ist grundsätzlich egal. Hier ein elegantes Beispiel:

$ cat ~/.ssh/id_dsa.pub | ssh user@remotehost ‘cat >> .ssh/authorized_keys’

Als remotehost ist eine IP oder Domain möglich.

HINWEIS:

Die Berechtigungen der authorized_keys müssen auf 0600 gesetzt werden. Sonst lässt der Rechner unter Umständen aus Sicherheitsgründen gar keine Verbindung per Schlüssel zu.

Schritt 3: Verbidungsversuch

Wenn ich alles hier korrekt geschildert habe und es so umgesetzt wurde, sollte folgender Verbindungsaufbau vom Client ohne Passwortabfrage funktionieren:

ssh user@remotehost

Wobei remotehost eine IP oder Domain sein kann.

Voila!

Hinweis

Diese Anleitung ist ein praktischer Leitfaden ohne Gewähr.

Druckansicht


Autor: admin
Datum: Freitag, 7. März 2008 14:20
Trackback: Trackback-URL Themengebiet: Linux und mehr

Feed zum Beitrag: RSS 2.0 Diesen Artikel kommentieren

Ein Kommentar

  1. 1

    [...] -g behält Gruppenrechte bei Der Parameter -a ist unumgänglich, wenn man das entfernte System als Ersatzserver betreiben möchte, da so gewährleistet wird das die Daten und deren Struktur 1 zu 1 (Rechte, Besitzer, Symlinks etc.) übertragen wird. Vorraussetzung für den Einsatz des Ersatzservers ist natürlich, dass dessen Strukturen sehr ähnlich sind, besonders im Bezug auf Benutzer und deren Rechte. Was macht – - delete? Genau das was vermutet wird, es löscht alle Dateien auf dem entfernten System, die durch die Übertragenden Dateien ersetzt werden sollen. Bsp. die Datei test.txt existiert auf beiden Systemen. Auf dem Quell-Server wurde diese Datei geändert. Nun würde beim nächsten Synchronisationsdurchlauf die Datei auf dem Ziel-Server durch die Option – - delete entfernt und dann durch die Übertragung neu geschrieben werden. Mit dem Parameter – - exclude schliesst man Ordner, Unterordner und Dateien aus der Synchronisation aus. Gerade im Bezug auf das Betreiben eines redudanten Servers möchte man nicht nach jeder Synchronisation die typischen Konfigurations-Dateien überarbeiten und mit den Daten des Ziel-Servers anpassen, dies lässt sich bsp. mit – -exclude=cfg*.php einrichten, sofern die Konfigurationsdateien nach diesem Schema erstellt wurden. Was genau würde in dem oben genannten Beispiel von wo nach wo synchronisiert? Der vollst. Inhalt von /var/www/ würde in den Zielordner root@domain.de:/var/www synchronisiert. Man beachte, dass das Zielverzeichnis keinen abschliessenden Schrägstrich führt. Ersatzweise kann man auch eine IP (root@xxx.xxx.xxx.xxx) oder auch eine dynamische Adresse für die entfernte Synchronisation angeben. Voila! Dem eifrigen Leser ist sicherlich aufgefallen, dass der geschilderte Vorgang so nicht funktionieren kann, denn der Cronjob würde zwar ausgeführt, aber dann zwecks Passwortabfrage (SSH-Login) in die Schranken gewiesen werden. Um den reibungslosen (passwortlosen) Verbidungsaufbau zu gewährleisten muss man einen öffentlichen Schlüssel bekanntmachen. Wie das funktioniert erfahren Sie in dem Beitrag SSH ohne Passwort Authentifizierung. [...]

Kommentar abgeben