launchd bash kinit 未检索 kerberos 票证
launchd bash kinit not retrieving kerberos tickets
我正在尝试自动更新我的 kerberos 票证。下面的脚本在终端中完美运行,但在 Automator 或 Launchd 中失败。
尽管expect 命令returns 没有错误,但没有获得新的票证。
运行 klist 将 return 一个空列表
感谢任何帮助
#!/bin/sh
expect -c 'spawn /usr/bin/kinit USER@DOMAIN; expect "password:" { send "<password>" ; interact} '
if [ "$?" = "0" ]; then
echo "obtained kerberos token"
else
echo "couldn't obtain kerberos token"
exit 1;
fi
exit 0
运行 在 launchd 中记录了以下输出
USER@DOMAIN's password:
obtained kerberos token
通过在发送命令后添加一些超时解决
expect -c 'spawn /usr/bin/kinit USER@DOMAIN; expect "password:" { send "<password>" ; interact}; sleep 5 '
注意:正如 Samson 在他的评论中提到的那样,将密码放在脚本文件中是一个糟糕的解决方案。我仅将其用于测试。
使用密钥选项卡是在 kerberos 中执行此操作的正确方法。
为 expect 命令添加超时对我有用
将硬编码的明文密码填充到命令提示符是一件邪恶的事情。为什么首先使用 Kerberos 身份验证?
在后台创建 Kerberos TGT 的预期方法是使用 keytab(即包含加密 "hash" 密码的文件)。
- 检查您的
krb5.conf
以获得 expected/supported 加密列表(例如 aes256-cts-hmac-sha1-96
、rc4-hmac
)
- 使用
ktutil
实用程序 创建密钥表(先阅读教程,
命令远非直观)
- 测试
kinit -kt /some/path/to/mykt.keytab
- 限制密钥表文件的权限,因为它允许任何人
使用您的帐户登录
我正在尝试自动更新我的 kerberos 票证。下面的脚本在终端中完美运行,但在 Automator 或 Launchd 中失败。 尽管expect 命令returns 没有错误,但没有获得新的票证。 运行 klist 将 return 一个空列表
感谢任何帮助
#!/bin/sh
expect -c 'spawn /usr/bin/kinit USER@DOMAIN; expect "password:" { send "<password>" ; interact} '
if [ "$?" = "0" ]; then
echo "obtained kerberos token"
else
echo "couldn't obtain kerberos token"
exit 1;
fi
exit 0
运行 在 launchd 中记录了以下输出
USER@DOMAIN's password:
obtained kerberos token
通过在发送命令后添加一些超时解决
expect -c 'spawn /usr/bin/kinit USER@DOMAIN; expect "password:" { send "<password>" ; interact}; sleep 5 '
注意:正如 Samson 在他的评论中提到的那样,将密码放在脚本文件中是一个糟糕的解决方案。我仅将其用于测试。 使用密钥选项卡是在 kerberos 中执行此操作的正确方法。
为 expect 命令添加超时对我有用
将硬编码的明文密码填充到命令提示符是一件邪恶的事情。为什么首先使用 Kerberos 身份验证?
在后台创建 Kerberos TGT 的预期方法是使用 keytab(即包含加密 "hash" 密码的文件)。
- 检查您的
krb5.conf
以获得 expected/supported 加密列表(例如aes256-cts-hmac-sha1-96
、rc4-hmac
) - 使用
ktutil
实用程序 创建密钥表(先阅读教程, 命令远非直观) - 测试
kinit -kt /some/path/to/mykt.keytab
- 限制密钥表文件的权限,因为它允许任何人 使用您的帐户登录