管理服务器群集的GPG密钥

时间:2020-06-25 00:41:09

标签: encryption automation gnupg

我希望手动管理根密码更改。 管理员使用sudo su进行root访问,因此永远不会每天使用root密码 我打算在某人实际需要的影响深远的紧急情况下“保存”密码

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

用例 在20个服务器的1个群集中自动更改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(keyring ??) 然后说从集群中的任何服务器解密服务器13的密码文件 以及如何使“钥匙环”了解群集中的其他钥匙

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

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

谢谢!

1 个答案:

答案 0 :(得分:0)

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

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

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

runonall'mkdir -p / shared / nas / gpg / $(主机名)'

runonall'gpg --export-secret-keys> / shared / nas / gpg / $(主机名)/ $(主机名).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,但这是供内部管理使用,对于所有意图和目的,发布密钥都是无用的。

这仅用于管理员密码文件的加密

还如下所示在初始密钥创建中添加了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