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:

$ kinit cstan@STANKOWIC.LOC
cstan@STANKOWIC.LOC's password:
$ klist
Credentials cache: API:xxx
 Principal: cstan@STANKOWIC.LOC

 Issued Expires Principal
Oct 22 11:17:30 2016 Oct 22 21:17:37 2016 krbtgt/STANKOWIC.LOC@STANKOWIC.LOC

$ ssh cstan@giertz.stankowic.loc
cstan@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:

$ 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:

GSSAPIAuthentication yes

Host *
      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:

Host *
     User max

Host *.mydmz.loc
     User simone

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

$ ssh giertz
Last login: Sat Oct 22 11:38:13 2016 from shittyrobots.loc
$ whoami
cstan

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

Schreibe einen Kommentar