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)
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.
Voila!
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!

Freitag, 27. Februar 2009 14:32
[...] -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. [...]