Comment renouveler un ticket Kerberos expiré que j'utilise pour l'authentification Amazon EMR ?

Date de la dernière mise à jour : 26/07/2021

J'utilise Kerberos pour l'authentification sur un cluster Amazon EMR. Mon ticket Kerberos a expiré. Lorsque j'essaie d'exécuter des commandes sur le cluster, j'obtiens un message d'erreur de ce type :

« 19/11/04 22:12:16 WARN ipc.Client: Exception encountered while connecting to the server : javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)] » (Exception rencontrée lors de la connexion au serveur : javax.security.sasl.SaslException : échec de l'initialisation GSS [Causé par GSSException : aucune information d'identification valide fournie (niveau du mécanisme : impossible de trouver un Kerberos tgt)])
ls: Failed on local exception: java.io.IOException: javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)]; Host. (Échec lors de l'exception locale : java.io.IOException : javax.Security.sasl.SaslException : échec de l'initialisation GSS [Causé par GSSException : aucune information d'identification valide fournie (niveau du mécanisme : impossible de trouver Kerberos tgt)] ; Hôte)
Details : local host is: "ip-xxx-x-x-x.ec2.internal/192.x.x.x";destination host is: "ip-xxx-x-x-x.ec2.internal":8020; 

Brève description

Pour renouveler un ticket Kerberos expiré, procédez comme suit :

1.    Exécutez la commande klist pour afficher les informations d'identification émises par le centre de distribution de clés (KDC).

2.    Pour obtenir un nouveau ticket, exécutez la commande kinit et spécifiez un fichier keytab contenant les informations d'identification ou saisissez le mot de passe de votre mandataire.

Solution

1.    Connectez-vous au nœud maître à l'aide de SSH.

2.    Pour confirmer l’expiration du ticket, exécutez la commande klist. Cette commande recherche le cache des informations d'identification. Si aucune information d'identification n'est mise en cache, le ticket a expiré.

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

3.    Pour confirmer le nom Kerberos du mandataire, affichez le contenu du fichier keytab :

[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.    Pour renouveler le ticket Kerberos, exécutez la commande kinit et spécifiez le fichier keytab ainsi que le mandataire :

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

5.    Vérifiez que les informations d'identification sont mises en cache :

[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.    Exécutez une commande HDFS pour confirmer que le ticket Kerberos fonctionne :

[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

Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?