我有几个实验室环境,其中的计算机会定期重建,但需要保留相同的 ssh 主机密钥,以便连接到实验室计算机的人(通常来自他们自己的系统,不在我的管理范围内)不会收到“主机密钥更改”错误每次我们升级实验室系统的操作系统时。
(这类似于问题处理 SSH 主机验证错误的最顺畅的工作流程?但在这种情况下,我们已经决定在系统重建过程中维护相同的密钥是最好的解决方案。)
现在,我有一个名为的 Puppet 模块ssh
,其中包含以下子句:
file { "/etc/ssh/":
owner => 'root',
group => 'root',
mode => '0644',
source => "puppet:///modules/ssh/$fqdn",
recurse => true,
require => Package['openssh-server'],
notify => Service['sshd'],
}
在 Puppet Master 上,每个主机都有自己的目录,其中包含所有主机密钥文件(、、ssh_host_key
等),如资源定义所暗示的那样。我的问题是,这感觉像是混合了代码和数据(因为所有主机密钥都位于模块目录中),每次添加一组新主机时,我都必须再次提交给 Puppet VCS。有没有更好的方法来管理这些东西?ssh_host_dsa_key
ssh_host_rsa_key
file
答案1
我的问题是,这感觉就像混合了代码和数据(因为所有主机密钥都位于模块目录中),每次添加一组新主机时,我都必须再次提交给 Puppet VCS。有没有更好的方法来管理这些东西?
如果您想将您的 puppet 文件与 SSH 配置/密钥分开,您可以调整您的fileserver.conf
并基本上共享您仅用于 ssh 配置的另一个目录。
fileserver.conf
[sshconfig]
path /srv/puppet/sshconfig/
allow *
使用上述配置,您的清单可能如下所示,并且文件将从中检索/srv/puppet/sshconfig/$fqdn/
。
file { "/etc/ssh/":
source => "puppet:///sshconfig/$fqdn",
...
}
答案2
我的建议是创建一个module
或一个script
将您知道的主机上传到external
服务器的地方,然后在此文件中给出一个sort -u
,排除任何重复的条目,然后将此文件上传到您的所有机器,当然也要注意其中的新条目ssh_known_hosts
。