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: