【问题标题】:Bash script to use keytab without writing it to disk使用 keytab 而不将其写入磁盘的 Bash 脚本
【发布时间】:2016-06-09 15:54:41
【问题描述】:

我有一个正在解密的加密密钥表,将其写入磁盘,然后与 kinit 一起使用。

我想要做的是能够在不将其写入磁盘的情况下使用密钥表,只需解密并直接与 kinit 一起使用。到目前为止,这是我的脚本,但我得到了
kinit:获取初始凭据时未找到密钥表文件“/etc/krb5.keytab”

#!/bin/bash
#$KEYTAB = gpg --decrypt keytab.gpg
$KEYTAB=keytab
kinit -k $KEYTAB principal@realm

我也在尝试使用管道

gpg --decrypt keytab.gpg | kinit -k principal@realm

但这也不行。

【问题讨论】:

  • 嗯,在我的 kinit 手册页中,选项 -k 描述为:“与 --keytab 相同,但使用默认的 keytab 名称(通常为 FILE:/etc/krb5.keytab )。”您可能想尝试gpg --decrypt keytab.gpg | .kinit -k -t - ...,但我不太有信心,因为这可以解决问题。
  • 由于评论编辑只允许 5 分钟,我在这里修改:建议用- 替换文件名,并通过-S ... 之类的方式将principal@realm 信息放入流程中选项。
  • $KEYTAB=keytab 应该是KEYTAB=keytab
  • @chepner 非常适合未加密的 :)
  • 我已经尝试使用KEYTAB="$(gpg --decrypt keytab.gpg)" 进行加密,但无法通过

标签: bash encryption pipe kerberos keytab


【解决方案1】:

这是不可能的,kinit 需要从文件中读取 keytab,不能传递变量。

http://web.mit.edu/kerberos/krb5-1.12/doc/user/user_commands/kinit.html

【讨论】:

  • 您担心什么:完成 kinit 后文件没有保留在磁盘介质上?
  • 相反,它被写入磁盘。目的是将其作为变量传递,而不是写入磁盘。
【解决方案2】:

只要 kinit 只是读取文件,使用 /dev/stdin

gpg --decrypt keytab.gpg | kinit -k /dev/stdin principal@realm

另一个程序的另一个例子

echo foo | cat /dev/stdin

【讨论】:

  • 它没有要求我提供密码来解密 keytab.gpg... 而且它似乎不会像 echo keytab | kinit -k /dev/stdin principal@realm 或 echo keytab | kinit -k -t /dev/stdin principal@realm 不起作用
  • 我不知道为什么。我创建了一个 gpg 文件,下面要求输入密码:gpg -d x.gpg | cat /dev/stdin
  • 我试了几次,我得到的最远的是kinit: Keytab contains no suitable keys for principal@realm while getting initial credentialgpg --decrypt keytab.gpg | kinit -k -t /dev/stdin principal@realm
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-18
  • 1970-01-01
  • 2017-02-14
相关资源
最近更新 更多