Auf diesen Seiten geht es um das passwortlose einloggen auf entfernten Rechnern mithilfe von ssh-Schlüsseln.

Der ssh-Schlüssel selbst ist Passwortgeschützt, dieses Passwort wird jedoch nur ein mal abgefragt, beim Einloggen auf unseren Rechner.

Vorneweg: die Möglichkeiten sind unbegrenzt. Ich werde das ganze am Beispiel unseres Belug-Servers und einen Linuxrechner zu Hause beschreiben. Dieser Server bietet einen Login für unsere Mitglieder über ssh und key.

Vorbereitungen auf dem Rechner zu Hause:

Bevor wir anfangen wird das vorhandene ~./ssh gesichert, falls was schief geht ist nichts verloren.

Als Benutzer auf der shell geben wir ein:

cp -r ./ssh  ./ssh_sicherung

Schlüssel erzeugen

Als erstes wird ein ssh-Schlüssel (key) mit Passwort gebraucht, ohne Passwort taugt das ganze nichts. Wir müssen also einen Key erzeugen:

ssh-keygen -t dsa 

Bitte ein Passwort vergeben.

Anmeldung ändern

Es wird als root auf dem client, an dem man arbeitet, die pam geändert. Als erstes brauchen wir noch die libpam-ssh, die wir installieren.

$ su # apt-get install libpam-ssh 

Mit Hilfe von libpam-ssh kann man sich gleich mit seiner Passphrase, anstatt seines Login-Passworts authentifizieren. Dazu öffnen wir eine rootshell und bearbeiten einige Dateien, die für die Anmeldung wichtig sind.

Achtung: Diese rootshell sollten Sie erst wieder schliesen, wenn die Anmeldung über Key funktioniert. Ansonsten sperren Sie sich selbst aus Ihren System aus!

Möglichkeit 1:

wir ändern für jede mögliche Anmeldeart die dazugehörenden Einträge in der /etc/pam.d/

Dazu muss man aber erst noch die Dateien login (für Konsolenzugang) und gdm (wahlweise kdm oder xdm; für den grafischen Login) im Verzeichnis /etc/pam.d anpassen. Dort muss man jeweils direkt vor die Zeile @include common-auth ein @include pam-ssh-auth setzen, und direkt nach die Zeile @include common-session ein @include pam-ssh-session. /etc/pam.d/gdm sieht dann bspw. in etwa so aus:

#%PAM-1.0
auth    requisite       pam_nologin.so
auth    required        pam_env.so
@include pam-ssh-auth
@include common-auth
@include common-account session required        pam_limits.so
@include common-session
@include pam-ssh-session
@include common-password 

Möglichkeit 2:

wir ändern global die Anmeldeart. Dazu müssen nur die Dateien common-auth und common-session geändert werden. Das ist ein wenig einfacher. Die Dateien sehen nach Bearbeitung so aus:

#
# /etc/pam.d/common-auth - authentication settings common to all services
#
@include pam-ssh-auth
auth    required        pam_unix.so nullok_secure

#
# /etc/pam.d/common-session - session-related modules common to all services
#
session required        pam_unix.so
@include pam-ssh-session

Testen:

Wir machen wir eine neue Konsole auf (Strg+ALT+F2 drücken). Eine grafische Konsole reicht hier nicht. Sie sollten nicht mehr nach Ihrem Passwort, sondern nach dem Passwort des ssh-Key gefragt werden, den wir vorher angelegt haben. Nach Eingabe des Passwortes für den ssh-key hat der ssh-agent hat den Schlüssel in den Speicher geladen geladen. Testen kann man das auf einer Konsole mit

es sollte der Schlüssel angezeigt werden.

Wenn das funktioniert, kann man die rootshell wieder schliesen.

Verteilen des Schlüssels

ab jetzt ist es ganz einfach, sich ohne Passwort auf fremden Rechnern einzuloggen. Auf jeden Account, den man zugreifen will, wird einfach der Schlüssel exportiert. Der Agent sorgt im Hintergrund dafür, das das gespeicherte Passwort nicht mehr abgefragt wird. Den schlüssel exportiert man einfach so:

das wars schon.

wenn es den Befehl ssh-copy-id nicht gibt: macht auch nix. Dann wird die Datei ~.ssh/id_dsa.pub an die Dateibenutzername@belug.de:~/.ssh/authorized_keys per

cat ~.ssh/id_dsa.pub >>~.ssh/authorized_keys

angehangen. Die Rechte der authorized_keys muss 644 sein.

Sicherheit

pam_delay

Lesestoff: pam_delay

Installation unter Debian

apt-get install libpam0g-dev
cd /usr/src
wget http://www-uxsup.csx.cam.ac.uk/~pjb1008/project/pam_delay/pam_delay.tar.gz
unp pam_delay.tar.gz
cd pam_delay
make
cp pam_delay.so /lib/security/
vim /etc/pam.d/ssh
        > an 1. Stelle in /etc/pam.d/ssh
        > auth required /lib/security/pam_delay.so 10s

bewirkt eine 10-Sekunden-Verzögerung, wenn ein Passwort falsch eingegeben wurde

entfernt ähnliche/ vergleichbare Ansätze: pam_faildelay und pam_tally

fail2ban

todo

ipt_recent

todo

Lesestoff:

http://wiki.ubuntuusers.de/SSH

LutzWillek/ssh-key passwd (de) (zuletzt geändert am 2009-04-25 19:09:02 durch p54914427)