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

Date de la dernière mise à jour : 21/11/2019

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)]
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
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é :

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 principal en utilisant 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 ?

Cette page peut-elle être améliorée ?


Vous avez besoin d'aide ?