Kerberos Single Sign-On über SSH unter OS X

Ein charmanter Vorteil beim Einsatz von Kerberos in Kombination mit SSH ist, das sich Passwort-Eingaben beim Verbindungsaufbau einsparen lassen. Unter OS X funktioniert das jedoch in der Regel erstmal nicht:

 1$ kinit cstan@STANKOWIC.LOC
 2cstan@STANKOWIC.LOC's password:
 3
 4$ klist
 5Credentials cache: API:xxx
 6 Principal: cstan@STANKOWIC.LOC
 7
 8 Issued Expires Principal
 9Oct 22 11:17:30 2016 Oct 22 21:17:37 2016 krbtgt/STANKOWIC.LOC@STANKOWIC.LOC
10
11$ ssh cstan@giertz.stankowic.loc
12cstan@giertz's password:

Trotz gültigem Kerberos-Ticket muss hier ein Passwort angegeben werden. Schuld hieran ist, dass der SSH-Client GSSAPI (Generic Security Service Application Program Interface) nicht verwendet wird. Der folgende Aufruf führte bei meiner OS X-Installation zum Ziel:

1$ ssh -o GSSAPIAuthentication=true cstan@giertz.stankowic.loc

Laut StackOverflow kann es auch notwendig sein, den Parameter GSSAPITrustDNS zu setzen.

Damit diese Optionen nicht bei jedem SSH-Aufruf angegeben werden müssen, können diese in Konfigurationsdateien vermerkt werden - beispielsweise in der persönlichen Konfigurationsdatei ˜/.ssh/config:

1GSSAPIAuthentication yes
2
3Host *
4      User cstan

Die letzten beiden Zeilen bewirken, dass für sämtliche SSH-Verbindungen ein Benutzername vorselektiert wird. So kann man sich auch diese Eingabe sparen. 🙂

Selbstverständlich kann mithilfe des Parameters -l beim Herstellen einer SSH-Verbindung ein alternativer Benutzername angegeben werden. Es lassen sich auch pro Hostname/Domain Einstellungen überschreiben:

1Host *
2     User max
3
4Host *.mydmz.loc
5     User simone

SSH-Logins sollten nun ohne Benutzer- und Passworteingabe möglich sein, solange ein gültiges Kerberos-Ticket vorliegt:

1$ ssh giertz
2Last login: Sat Oct 22 11:38:13 2016 from shittyrobots.loc
3
4$ whoami
5cstan

Damit nicht jedes Mal Kerberos-Tickets mit kinit generiert werden, gibt es unter OS X einen Ticket-Viewer, der jedoch etwas versteckt ist. Er ist über den Pfad /System/Library/CoreServices/Ticket-Viewer.app zu erreichen und stellt ein Frontend für die Kerberos-Tools dar:

Ticket-Viewer

Übersetzungen: