.

Pubkey-Authentifierzung bei SSH |

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:

  • Wenn Du Änderungen an der SSHd-Konfiguration vornimmst, solltest Du so lange eine SSH-Verbindung auf dem Server geöffnet lassen, bis Du sicher bist, dass die neue Konfiguration auch funktioniert. Sonst hat man sich schnell mal permanent ausgesperrt. Und bei einem Server in einem Rechenzentrum ist das nicht wirklich lustig ;)
  • Du solltest zur Erhöhung der Sicherheit, ssh-Logins für Root verbieten. Das macht es einem bösen Menschen schwerer, den Server zu kompromitieren. Dies erreichst Du mit dem Eintrag “PermitRootLogin no” in der sshd_config.
  • Schlussendlich kann auch der Login über Passwörter per SSH verboten werden, wenn die Pubkey-Authentifizierung funktioniert. Hierfür ist der Eintrag “PasswordAuthentication no” in der sshd_config zuständig.
  • Keine Antwort zu 'Pubkey-Authentifierzung bei SSH'

    Noch nix da .. kommentartechnisch gesehen ... :)

    Eine Antwort eintragen

    *benötigt

    *benötigt / nicht sichtbar

    Kalender
    August 2006
    M D M D F S S
     123456
    78910111213
    14151617181920
    21222324252627
    28293031EC
    Ereignisse
      • Keine Termine.
    Kategorien
    Archiv
    Wichtiges!?

    .