【问题标题】:Managing GPG keys for clusters of servers管理服务器集群的 GPG 密钥
【发布时间】:2020-10-15 08:49:02
【问题描述】:

我想要对 root 密码更改进行手动管理。 管理员使用 sudo su 进行 root 访问,因此从不每天使用 root 密码 我计划在有人真正需要它的影响深远的紧急情况下“保存”密码

通常这是一项手动管理任务,密码保存在数字保险箱中(这项工作是为了消除这种情况)

用例 在 1 个由 20 台服务器组成的集群中自动更改 root 密码

伪代码

通过 ssh 跨 20 个节点生成 gpg 密钥 在这里使用技术https://www.gnupg.org/documentation/manuals/gnupg-devel/Unattended-GPG-key-generation.html

然后每个节点都有 ~/.gnupg 目录和键

下一个 this-is-scripted.sh

为 root 生成一个安全密码 将密码写入文件 修改root密码 加密文件

我在 20 个节点上运行此脚本,它更改密码,加密密码文件,我可以解密文件。

所以在这一点上,一切都很好......

我的问题是,为了更好地扩展,我如何将每个服务器中的所有密钥“导入”到每个服务器中(考虑在 cluster1 中)?

用例我需要解密服务器13的密码文件不可用或配置损坏。

具体来说 如何从 gpg 命令行(密钥环??)中识别每个服务器,例如 1 到 20 然后从集群中的任何服务器说从服务器 13 解密密码文件 和/或如何拥有一个知道集群中其他密钥的“密钥环”

我知道 gpg 主要用于电子邮件,但我想用它来加密密码文件

希望这对某人有意义:-)

谢谢!

【问题讨论】:

    标签: encryption automation gnupg


    【解决方案1】:

    因为没有回复...但是我从 StackOverflow 中得到了很多,所以我想出了我的解决方案并将其发布在这里...

    创建初始密钥时我可以做的几件事

    runonall() {
    for node in `cat /your/list/of/servers.txt`
    do ssh root@node "$1"
    done
    }
    

    runonall 'mkdir -p /shared/nas/gpg/$(hostname)'

    runonall 'gpg --export-secret-keys > /shared/nas/gpg/$(hostname)/$(hostname).private.key'

    runonall 'for i in $(ls -a /shared/nas/gpg/$(hostname)/$(hostname).private.key);做 gpg --import $i;完成'

    runonall 'for i in $(ls -a /shared/nas/gpg/$(hostname)/$(hostname).private.key);做 rm -f $i;完毕' 现在每个主机都拥有所有其他主机的私钥,您可以解密共享 nas 上的任何加密密码文件

    我应该提到,当主脚本运行时,加密的密码转到 /shared/nas/gpg/$(hostname)

    我知道...私钥应该是 PRIVATE,但这是供内部管理使用的,出于所有意图和目的,pub 密钥是无用的。

    这只是为了管理员加密密码文件

    还在初始密钥创建中添加了 HOST 变量,如下所示

    https://www.gnupg.org/documentation//manuals/gnupg/Unattended-GPG-key-generation.html

    #!/bin/bash
    # gen-keys-wrapper.sh
    HOST=$(hostname)
    cat >$HOME/gen-keys.sh <<EOF
         %echo Generating a basic OpenPGP key
         Key-Type: DSA
         Key-Length: 1024
         Subkey-Type: ELG-E
         Subkey-Length: 1024
         Name-Real: Leadorfollow create root gpg keys on $HOST
         Name-Comment: more free form info here..
         Name-Email: Leadorfollow@foo.bar
         Expire-Date: 0
         Passphrase: abc
         %commit
         %echo done
    EOF
    gpg --batch --generate-key $HOME/gen-keys.sh
    rm -f $HOME/gen-keys.sh
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-21
      • 1970-01-01
      • 1970-01-01
      • 2017-01-19
      相关资源
      最近更新 更多