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. Putty SSH ForwardAgent