Distkeys als Open Source

Es gibt im Wesentlichen zwei Möglichkeiten, sich an einem SSH-Server zu authentifizieren: Via Passwort und via Schlüssel. Da ich bei einem selbstverständlich mit einer guten Passwort-Phrase geschützten Schlüssel nicht nur etwas brauche, was ich weiß, sondern auch noch etwas brauche, was ich mit mir führe, ist die Schlüssel-Authentizierung sicherer.

Einige Kunden haben es schon einmal gesehen, andere Fragen sich vielleicht: Wie kopieren wir eigentlich unsere öffentlichen SSH-Schlüssel auf Linux-Systeme, für die Kunden Fernwartung wünschen, oder auf unsere eigenen Server? Es ist natürlich möglich mit den Befehlen scp und cat oder eben mit ssh-copy-id zu arbeiten, um jeden öffentlichen Schlüssel einzeln der authorized_keys-Datei des betreffenden Benutzers auf jeden Server zu kopieren. Es geht aber auch wesentlich einfacher:

Wir setzen seit Jahren dazu das selbst geschriebene Distkeys ein.

Was zunächst als Perl-Skript startete, ist in der aktuellen Inkarnation ein objektorientiertes Ruby-Skript, das beim Verteilen der Schlüssel zunächst die authorized_keys-Datei vom Server herunterlädt, alle Änderungen durchführt, und dann, nach dem Erstellen eines Backups, wieder hoch lädt, anstatt für jeden einzelnen Schlüssel erneut eine SSH-Verbindung aufzubauen. Zudem erreicht es via SSH Port Forwarding auch Server hinter einer Firewall und löscht veraltete Schlüssel. Als nettes Gimick bietet Distkeys auch interaktive SSH-Logins und das Ausführen eines Skriptes auf einer Liste von Hosts.

Wir dachten uns, dass ein solches Skript auch andere Admins interessieren könnte, die viele Server verwalten. Daher stellten wir den Quelltext unter eine Open-Source-Lizenz (GPL2+) und machten das Projekt auf unserer Open-Source-Webseite https://github.com/teamix/distkeys publik. Zusätzlich erstellte ich ein Debian-Paket und schlug dieses für eine Aufnahme in das Debian-Archiv vor. Wer Disktkeys schon jetzt mal auf einem Debian-System ausprobieren möchte, findet das Paket auf meiner persönlichen Webseite bei teamix.

Eine Schlüsselliste zum Hinzufügen und Entfernern von Schlüsseln sieht beispielsweise so aus:

Ein einfacher Aufruf stellt sicher, dass alle mit einem Pluszeichen markierte Schlüssel und kein mit Minuszeichen markierter Schlüssel auf dem System ist – andere Schlüssel läßt Distkeys unberührt:

Bei Interesse erläutere ich in einem weiteren Blog-Eintrag die Verwendung von Distkeys etwas näher.

Als Alternative bietet sich natürlich an, gleich die komplette Konfiguration via Puppet oder einem Ähnlichen Werkzeug zum Konfigurationsmanagement auszurollen. Wer jedoch einfach mal ein paar SSH-Schlüssel verteilen möchte und das auch an Systeme hinter Feuerwällen, findet mit Distkeys eine einfache Lösung dafür.

Martin Steigerwald

Martin Steigerwald beschäftigt sich seit Mitte der 90er Jahre mit Linux. Er ist langjähriger Autor von Artikeln für verschiedene Computer-Magazine wie die LinuxUser (linuxuser.de) und das Linux-Magazin (linux-magazin.de). Seit Herbst 2004 ist er als Trainer für Linux-Themen bei Proact Deutschland in Nürnberg tätig.

 
Kommentare

Noch keine Kommentare vorhanden.

Hinterlassen Sie einen Kommentar