GSS initiate failed: No valid credentials provided Failed to find any kerberos tgt
当同一OS用户并发执行多个认证脚本时,可能会遇到认证失败的问题,表现为GSS Initiate Failed等错误
在典型的任务调度场景中,多个任务可能被同一用户同时调度执行。这就导致同一任务可能会并发执行kinit操作,而 kerberos Ticket Cache文件存储在/tmp目录下,文件名为krb5cc_{uid},其中uid为用户标识号。因为同一OS用户下的多个脚本共享相同的uid,由于并发kinit操作,不同的认证会覆盖同一个uid下的Ticket Cache文件,导致Kerberos认证信息串掉。后续任务使用覆盖的Cache文件,导致认证失败。
指定独立的Ticket Cache文件:
通过在Shell脚本中设置KRB5CCNAME
环境变量,通过指定KRB5CCNAME
环境变量为每个Kerberos用户指定独立的Ticket Cache文件,解决并发执行脚本时Ticket Cache文件被覆盖的问题。
export KRB5CCNAME=/tmp/xxx_krb5c
kinit -kt /path/xxx/keytab user_name
KRB5_CONFIG
环境变量,指定不同的配置文件路径,以避免多个脚本之间的配置信息冲突。