Wie kann ich ein abgelaufenes Kerberos-Ticket verlängern, das ich für die Amazon EMR-Authentifizierung verwende?

Lesedauer: 2 Minute
0

Ich verwende Kerberos für die Authentifizierung in einem Amazon EMR-Cluster. Mein Kerberos-Ticket ist abgelaufen. Wenn ich versuche, Befehle auf dem Cluster auszuführen, erhalte ich eine Fehlermeldung ähnlich der folgenden: 19/11/04 22:12:16 WARN ipc.Client: Beim Herstellen einer Verbindung zum Server ist eine Ausnahme aufgetreten: javax.security.sasl.SaslException: GSS-Initiierung ist fehlgeschlagen [Verursacht durch GSSException: Keine gültigen Anmeldeinformationen angegeben (Mechanismusebene: Es konnten keine Kerberos [tgt)] ls gefunden werden: Fehler bei lokaler Ausnahme: java.io.IOException: javax.security.sasl.SaslException: GSS-Initiierung ist fehlgeschlagen [Verursacht durch GSSException: Keine gültigen Anmeldeinformationen angegeben (Mechanismusebene: Es wurde kein Kerberos-tgt gefunden)]; Hostdetails: Der lokale Host ist: „ip-xxx-x-x-x.ec2.internal/192.x.x.x“; Zielhost ist: „ip-xxx-x-x-x.ec2.internal“:8020;

Kurzbeschreibung

Gehen Sie wie folgt vor, um ein abgelaufenes Kerberos-Ticket zu verlängern:

1.    Führen Sie den Befehl klist aus, um die vom Key Distribution Center (KDC) ausgegebenen Anmeldeinformationen anzuzeigen.

2.    Um ein neues Ticket zu erhalten, führen Sie den Befehl kinit aus und geben Sie entweder eine Keytab-Datei an, die Anmeldeinformationen enthält, oder geben Sie das Passwort für Ihren Principal ein.

Lösung

1.    Stellen Sie über SSH eine Verbindung zum Master-Knoten her.

2.    Führen Sie den Befehl klist aus, um zu bestätigen, dass das Ticket abgelaufen ist. Dieser Befehl sucht nach einem Cache für Anmeldeinformationen. Wenn keine Anmeldeinformationen zwischengespeichert sind, ist das Ticket abgelaufen.

[hadoop@ip-xxx-x-x-xxx ~]$ klist
klist: No credentials cache found (filename: /tmp/krb5cc_498)

3.    Um den Kerberos-Prinzipalnamen zu bestätigen, listen Sie den Inhalt der Keytab-Datei auf:

[hadoop@ip-xxx-x-x-xxx ~]$ klist -kt /etc/hadoop.keytab
Keytab name: FILE:/etc/hadoop.keytab
KVNO Timestamp           Principal
---- ------------------- ------------------------------------------------------
   2 07/04/2019 21:48:46 hadoop/ip-xxx-x-x-xxx.ec2.internal@EC2.INTERNAL
   2 07/04/2019 21:48:46 hadoop/ip-xxx-x-x-xxx.ec2.internal@EC2.INTERNAL
   2 07/04/2019 21:48:46 hadoop/ip-xxx-x-x-xxx.ec2.internal@EC2.INTERNAL

4.    Um das Kerberos-Ticket zu erneuern, führen Sie kinit aus und geben Sie sowohl die Keytab-Datei als auch den Principal an:

[hadoop@ip-xxx-x-x-xxx ~]$ kinit -kt /etc/hadoop.keytab hadoop/ip-xxx-x-x-xxx.ec2.internal@EC2.INTERNAL

5.    Vergewissern Sie sich, dass die Anmeldeinformationen zwischengespeichert sind:

[hadoop@ip-xxx-x-x-xxx ~]$ klist
Ticket cache: FILE:/tmp/krb5cc_498
Default principal: hadoop/ip-xxx-x-x-xxx.ec2.internal@EC2.INTERNAL
Valid starting       Expires              Service principal
11/04/2019 22:13:47  11/05/2019 08:13:47  krbtgt/EC2.INTERNAL@EC2.INTERNAL
renew until 11/06/2019 22:13:47

6.    Führen Sie einen HDFS-Befehl aus, um zu überprüfen, ob das Kerberos-Ticket funktioniert:

[hadoop@ip-XXX-XX-XX-XXX ~]$ hdfs dfs -ls /
Found 4 items
drwxr-xr-x   - hdfs hadoop          0 2019-11-05 22:45 /apps
drwxrwxrwt   - hdfs hadoop          0 2019-11-05 22:46 /tmp
drwxr-xr-x   - hdfs hadoop          0 2019-11-05 22:45 /user
drwxr-xr-x   - hdfs hadoop          0 2019-11-05 22:45 /var

Ähnliche Informationen

Kerberos-Authentifizierung verwenden

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 3 Jahren