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
- ssh-add -l
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:
ssh-copy-id -i ~/.ssh/id_dsa.pub benutzername@belug.de
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: