Warum nicht per Zertifikat
Habt ihr euch nicht schon einmal gefragt, warum benötigte ich, wenn ich sudo eingebe ein Passwort, obwohl ich SSH mit Zertifikats-basierter Authentifizierung benutze. Das könnt ihr aber ändern. Hierfür gibt es für Pam ein passendes Modul namens pam_ssh_agent_auth.
In diesem Artikel beschreibt ich, wie ihr die Passwortauthentifizierung bei sudo auf SSH Agent auth umstellt, am Beispiel einer Ubuntu Distribution. Sollte aber auch unter Debian klappen.
Installation pam_ssh_agent_auth
Unter Ubuntu gibt es hier ein fertiges Paket. Dieses könnt ihr wie folgt installieren.
apt-get install libpam-ssh-agent-auth
Konfiguration
Als Erstes solltet ihr PAM sagen, wo sich die vertrauenswürdig Public Key befinden. Da SSH die Key im Benutzerverzeichnis erwartet, sagen wir das auch Pam.
Dazu fügt ihr in der Datei /etc/pam.d/sudo
folgenden Eintrag hinzu
auth sufficient pam_ssh_agent_auth.so file=~/.ssh/authorized_keys
Nun müssen wir noch die sudo Konfigurationsdatei anpassen. Diese liegt unter /etc/sudoers
. Bitte nur über visudo
editieren. Hier gibt ihr folgenden Eintrag hinzu
Defaults env_keep += SSH_AUTH_SOCK
Danach solltet ihr beim nächsten Mal, bei der Verwendung von sudo über SSH mit Zertifikats-basierter Authentifizierung kein Passwort mehr eingeben müssen.
Falls ihr doch noch das Passwort eingeben müsst, ist wahrscheinlich bei euch am Client ForwardAgent
nicht aktiv.
SSH Client ForwardAgent
Ist diese Funktion aktiv, nimmt der SSH Agent euren privaten SSH Schlüssel auf und ihr könnt ihn dann zum Beispiel verwenden, um euch über einen Jumphost zu einem weiteren Server per SSH ohne Eingabe eines Passworts zu verbinden. In unserem Beispiel, nimmt der SSH Agent den privaten Schlüssel um euch gegen PAM auf dem Server zu autorisieren.
Aktivierung unter Linux
Wenn ihr es nicht dauerhaft aktiviert haben wollt, könnt ihr ssh mit dem Parameter -A
aufrufen. Dadurch wird der Authentication Agent aktiviert.
ssh -A user@host
Wenn ihr es dauerhaft aktiviert haben wollt, ist es möglich in der Datei ~/.ssh/config
folgenden Eintrag für einen Host hinzuzufügen ForwardAgent yes
.
#> ~/.ssh/config
Host example.com
HostName example.com
User me
ForwardAgent yes
Aktivierung unter Windows im Programm Putty
Unter Putty gibt es eine Einstellung. Wenn diese Aktiv ist, wird ForwardAgent aktiv.