用于创建 kerberos 密钥表的 Shell 脚本

问题描述 投票:0回答:1

我正在尝试开发一个 shell 脚本来使用 ktutil 生成 keytab。我需要向密钥表添加两个主体。两个原则并不是独一无二的。第一个主体应添加密码标志,第二个主体应添加密钥标志(密钥将从第一个主体获取)。由于 ktutil 不允许字符串操作,因此我使用第一个主体生成临时密钥表,并通过读取密钥表并将密钥分配给变量 key 从中提取密钥,如下面的脚本

在下面的脚本中,我可以使用密码标志添加主体,但不能使用密钥标志。执行停留在提示十六进制键处,它不是从脚本中提供的输入变量中选取。如果提供了任何无效的密钥,则会抛出错误“密钥中存在非法字符”。想知道为什么它不使用有效密钥进入下一步。我无法在脚本中使用 Expect,因为我是在公司环境中执行此操作。

脚本

    #!/bin/bash
    
    user1="PRINCIPAL1"
    pass="topsecret"
    user2="PRINCIPAL2"
        
    printf "%b" "addent -password -p $user1 -k 1 -e aes256-cts-hmac-sha1-96\n$pass\nwrite_kt temp.keytab" | ktutil

    tmp=`printf "%b" "read_kt temp.keytab\nlist -k\nexit" | ktutil`
    key=`echo $tmp | awk '{print substr($10, 3, length($10) - 1)}'`
        
    printf "%b" "addent -key -p $user2 -k 1 -e aes256-cts-hmac-sha1-96\n$key\nwrite_kt $user.keytab" | ktutil

工作命令:

printf "%b" "addent -password -p $user1 -k 1 -e aes256-cts-hmac-sha1-96\n$pass\nwrite_kt temp.keytab" | ktutil

不工作:

printf "%b" "addent -key -p $user2 -k 1 -e aes256-cts-hmac-sha1-96\n$key\nwrite_kt $user.keytab" | ktutil

它正在生成名为 temp.keytab 的密钥表。但是,不生成 名为 PRINCIPAL.keytab 的密钥表。相反,它被困在 提示输出中输入十六进制键

bash shell unix scripting kerberos
1个回答
0
投票

printf "%b" "read_kt temp.keytab\nlist -k\nexit"
的结果为空。任何结果行中都没有第 10 列,您应该手动检查输出。

主密钥列在第五行第四列的括号中,我不确定

awk '{print substr($10, 3, length($10) - 1)}'
是否能正确提取它。

© www.soinside.com 2019 - 2024. All rights reserved.