我希望手动管理根密码更改。 管理员使用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主要用于电子邮件,但我想将其用于密码文件加密
希望这对某人有意义:-)
谢谢!
答案 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