Nicht nur für automatisierte Aufgaben über SSH macht eine Authentifizierung über öffentliche Schlüssel Sinn. Hier eine kurze Beschreibung, wie man das einrichtet:
Voraussetzung für diese kleine Anleitung ist, dass bereits eine SSH-Anmeldung am Server über den Passwort-Dialog möglich ist. Unter Debian reicht ein:
#apt-get install ssh
um einen SSH-Server “aufzusetzen”.
Das Konzept der asymmetrischen Verschlüsselung mit Private- und Public-Key wird kurz aber verständlich erklärt auf:
http://www.gnupg.org/(de)/howtos/de/GPGMiniHowto-1.html#ss1.1
Um die Pubkey-Variante einzurichten, melde Dich zunächst auf dem Client (auf dem natürlich auch das ssh-Paket installiert sein muss) am besten unter dem Benutzernamen an, der später die SSH-Verbindung initiieren soll.
Danach generiert der Aufruf von:
$ ssh-keygen -t rsa -b 2048 -f ~/.ssh/meinkey
unter ~/.ssh den privaten Schlüssel “meinkey” und den zugehörigen öffentlichen Schlüssel “meinkey.pub”.
Die Password-Phrase muss leergelassen werden, wenn eine scriptgesteuerte SSH-Verbindung (z.B. für ein Backup-Script wie dirvish) aufgebaut werden soll. Soll die Verbindung interaktiv durch einen Benutzer aufgebaut werden, sollte hier auf jeden Fall eine Passphrase eingetragen werden!
Der öffentliche Schlüssel kommt nun auf den SSH-Server:
$ scp ~/.ssh/meinkey.pub serveruser@server:/home/serveruser/.ssh/authorized_keys
Um jetzt die schlüsselbasierte Anmeldung auf dem Server zuzulassen, müssen dort in der Datei /etc/ssh/sshd_config die Zeilen:
RSAAuthentication yes PubkeyAuthentication yes
eingetragen sein. Sollte das noch nicht der Fall gewesen sein, starte nach der Anpassung der Konfigurationsdatei noch den SSH-Server neu:
# /etc/init.d/ssh restart
Fertig.
Die SSH-Verbindung kann vom Client dann mit:
$ ssh -i ~/.ssh/meinkey serverbenutzer@server
hergestellt werden.
Wird der private Schlüssel von “meinkey” nach “id_rsa” umbenannt, wir dieser auch ohne den Parameter “-i” automatisch zur Übergabe bei einer SSH-Anmeldung benutzt.
Um das Ganze noch weiter abzusichern, kann in der authorized_keys die Benutzung des Schlüssels auch auf einzelne Rechner und sogar auszuführende Befehle eingeschränkt werden.
Vor den entsprechenden öffentlichen Schlüssel kann hier die Beschränkung mit den Parametern “from” und “commando” festgelegt werden. So wird aus:
ssh-dss AAAAB3Nz...
z.B.:
"from=meinrechner", command="/usr/bin/rsync" ssh-dss AAAAB3Nz...
So könnte der entsprechende private Schlüssel nur noch von “meinrechner” benutzt werden. Und von diesem aus ist auch nur das Kommando “/usr/bin/rsync” ausführbar.
Ein paar kleine Tipps noch zum Schluss:
Noch nix da .. kommentartechnisch gesehen ... :)
Eine Antwort eintragen