SSH 公钥分发系统

SSH 公钥分发系统

我们有许多不同的系统,由几个人管理。我们选择使用 SSH 公钥身份验证来访问这些系统。这非常有效,因为无需管理或共享管理帐户密码,无需记住各个系统的密码(只需记住私钥的密码),无需与每个远程命令交互(输入密码)。

问题是,安装在系统上的公钥需要以某种方式进行管理。人员来来去去,密钥可能会被泄露,职责也会发生变化(今天被授权进入一个系统的人明天可能会被授权访问另一个系统)。目前,我们通过手动编辑每个需要它的帐户上的 ~/.ssh/authorized_keys 文件来管理它,但这需要大量工作并且容易出错。

在这种情况下,是否有现成的工具来管理公钥?您有自己的解决方案吗?或者以这种方式管理系统的整个想法是有缺陷的?

答案1

正如 pulegium 所提到的,任何通用配置管理软件,如木偶厨师乙型肝炎病毒或者CF引擎可以完成任务。

授权密钥文件并不复杂,你也可以使用同步或者类似 (D)SCMgit或者管理此文件。您的其中一台服务器上有“主”文件,并通过 rsync/git/hg/… 提供该文件。在其他每台服务器上,您运行一个 cron 作业,定期检索主副本(如果已更改)并将其复制到正确的本地位置。哎呀,这甚至可以与纯 HTTP 或 FTP 一起使用。

底线是:拥有您 authorized_keys 文件的一个“主”副本并更新它。让“客户端”(应该拥有当前 authorized_keys 文件的计算机)从您的主服务器获取它并在本地部署它。

答案2

OpenSSH 有一个补丁,允许它使用来自 LDAP 服务器的公钥,但这只有在您的 auth/account 检查也针对该 LDAP 服务器进行时才有意义(我的环境就是这样设置的)。而且它的安全性仅取决于您的 LDAP 配置(因此您需要使用 SSL 和验证密钥)。

http://code.google.com/p/openssh-lpk/了解补丁和更多详细信息。我不知道任何操作系统默认附带此补丁,但如果您运行的是 FreeBSD,并且使用来自 ports 的 OpenSSH,则这是一个可选补丁。

答案3

我运行了一个非常简单的解决方案,它与防火墙规则相同

示例文件 hosts.conf:

192.168.0.1
192.168.2.99
192.168.2.100

分发.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;

这就是全部的魔法 :-)

答案4

我不确定你说的“很多”是什么意思,也不知道你是否愿意改变,但 Kerberos 就是你要找的机器人。它可以优雅地解决你的问题,并能对人和机器进行身份验证。

相关内容