Jac*_*zny 26 ssh public-key ssh-keys
我们有许多不同的系统,由几个人管理。我们选择使用 SSH 公钥认证来访问这些系统。这很好用,因为不需要管理或共享管理帐户密码,不需要记住各种系统的密码(只有私钥的密码),不需要与每个远程命令交互(输入密码) .
问题是,安装在系统上的公钥需要以某种方式进行管理。人们来来去去,钥匙可能会被泄露,责任会发生变化(今天被授权进入一个系统的人明天可能被授权访问另一个系统)。目前我们通过手动编辑每个需要它的帐户上的 ~/.ssh/authorized_keys 文件来管理它,但这是很多工作并且容易出错。
在这种情况下,有没有现成的工具来管理公钥?您有自己的解决方案吗?或者,以这种方式管理系统的整个想法是否有缺陷?
jos*_*chi 18
正如 pulegium 已经提到的,任何通用配置管理软件,如Puppet、Chef、Bcfg2或cfengine都可以完成任务。
由于authorized_keys文件并没有那么复杂,您还可以使用rsync或(D)SCM(如git或hg)来管理此文件。您在其中一台服务器上拥有“主”文件,并通过 rsync/git/hg/... 提供它。在其他每台服务器上,您都运行一个 cron 作业,它会定期检索主副本(如果已更改)并将其复制到正确的本地位置。哎呀,这甚至适用于纯 HTTP 或 FTP。
底线是:拥有您的authorized_keys 文件的一个“主”副本并更新它。让“客户端”(应该有当前authorized_keys 文件的计算机)从您的主服务器获取它并在本地部署它。
vor*_*aq7 11
有一个可用于 OpenSSH 的补丁,允许它使用来自 LDAP 服务器的公钥,但这只有在您的身份验证/帐户检查也针对该 LDAP 服务器(这是我的环境设置方式)进行时才真正有意义。此外,它仅与您的 LDAP 配置一样安全(因此您希望使用 SSL 和验证密钥)。
有关补丁和更多详细信息,请参阅http://code.google.com/p/openssh-lpk/。我不知道默认情况下有任何带有此补丁的操作系统,但是如果您运行的是 FreeBSD,如果您从端口使用 OpenSSH,它是一个可选补丁。
我运行了一个非常简单的解决方案,它与防火墙规则相同
示例文件 hosts.conf:
192.168.0.1
192.168.2.99
192.168.2.100
Run Code Online (Sandbox Code Playgroud)
分发.sh:
#!/bin/bash
for d in `cat ./hosts.conf`; do
echo "copying to $d ...";
scp /root/.ssh./authorized_keys root@$d:/root/.ssh./authorized_keys
done;
Run Code Online (Sandbox Code Playgroud)
这就是整个魔法:-)