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: