Elegante SSH-Authentifizierung Reloaded
Single-Sign-On mit pam_ssh in Debian
Dieser Artikel zeigt, wie auf Debian ein sogenanntes "Single-Sign-On" eingerichtet wird, d.h. ein Nutzer authentifiziert sich am Linux-Rechner nicht über sein normales Unix-Passwort, sondern über die Passphrase seines SSH-Schlüssels.
Kleine Erinnerung
In meinem Schritt-für-Schritt-Artikel Elegante SSH-Authentifizierung über PAM habe ich gezeigt, wie auf Gentoo ein sogenanntes "Single-Sign-On" eingerichtet wird, d.h. ein Nutzer authentifiziert sich am Linux-Rechner nicht über sein normales Unix-Passwort, sondern über die Passphrase seines SSH-Schlüssels. Ist der Schlüssel auch anderen Rechnern bekannt, muss also nur einmal die Passphrase eingegeben werden, um komfortabel Zugang auf diesen anderen Rechnern zu erhalten.
pam_ssh in Debian
Heute zeige ich eine Möglichkeit, dieses Single-Sign-On auch auf Debian einzurichten, Debian/Sid genauer gesagt. Leider gibt es offenbar bisher kein vorkompiliertes Paket, so dass wir auf uns selbst gestellt sind. Los geht's! Von Sourceforge laden wir uns den Quellcode von pam_ssh herunter und entpacken das Archiv mit
tar -xvjf ./archivname
Nun wechseln wir in der Konsole in das neu entstandene Verzeichnis und beginnen - noch als normaler Nutzer angemeldet - mit dem Kompilieren:
./configure; make
Das Kompilieren sollte nicht länger als ein paar Sekunden dauern. Nun bauen wir uns ein provisorisches Debian-Paket, das wir bei Bedarf ganz bequem und wie gehabt mit apt-get oder dpkg deinstallieren können - auf diese Art erstellte Pakete sind aber nicht für eine Veröffentlichung bestimmt. Also geben wir als root ein:checkinstall
Wenn checkinstall noch nicht installiert sein sollte, ist jetzt eine gute Gelegenheit, es zu mit
apt-get install checkinstall
zu installieren und dann wie erwähnt checkinstall
im pam_ssh-Verzeichnis zu starten.
Im Grunde können alle Fragen, die checkinstall stellt, mit ENTER beantwortet werden. Scheitert das Bauen des Pakets, liefert das Log wertvolle Hinweise. Bei meinen Versuchen scheiterte checkinstall an unerlaubten Zeichen im Namen. In diesem Fall können wir einen anderen Namen wählen, wenn checkinstall folgende Anzeige darstellt:
This package will be built according to these values: 0 - Maintainer: [ rschmidt@callisto ] 1 - Summary: [ Package created with checkinstall 1.5.3 ] 2 - Name: [ pam_ssh-1.91 ] 3 - Version: [ 1.91 ] 4 - Release: [ 1 ] 5 - License: [ GPL ] 6 - Group: [ checkinstall ] 7 - Architecture: [ i386 ] 8 - Source location: [ pam_ssh-1.91 ] 9 - Alternate source location: [ ] Enter a number to change any of them or press ENTER to continue:
Hier wählen wir "2", geben als Namen "libpamssh" ein und bestätigen den Rest wieder mit ENTER. Das neue Paket ist im aktuellen Verzeichnis zu finden und kann mit
dpkg -i ./paketname.deb
installiert werden.
Im ersten Teil wurde PAM systemweit eingerichtet, d.h. auch über eine TTY-Konsole (oder KDM, GDM etc.) mussten die Nutzer sich per SSH-Passphrase authentifizieren. Dieses Mal richten wir die Abfrage nur für GDM-Nutzer ein. Dazu bearbeiten wir als root die Datei /etc/pam.d/gdm. Diese sieht normalerweise so aus (GNOME aus Experimental, müsste aber auch sonst so aussehen):
#%PAM-1.0 auth requisite pam_nologin.so auth required pam_env.so @include common-auth @include common-account session required pam_limits.so @include common-session @include common-password
Wir ändern die Datei so, dass sie wie folgt aussieht:
#%PAM-1.0 auth requisite pam_nologin.so auth sufficient /lib/security/pam_ssh.so auth required pam_env.so @include common-auth @include common-account session sufficient /lib/security/pam_ssh.so session required pam_limits.so @include common-session @include common-password
Nur die beiden Zeilen mit pam_ssh.so
sind hinzugekommen. Beim nächsten Login über GDM wird dann die SSH-Passphrase abgefragt.