我有一些实验室环境,其中的计算机会定期重建,但需要保留相同的 ssh 主机密钥,以便连接到实验室计算机的人(通常来自他们自己的系统,不在我的管理下)不会得到“每次我们升级实验室系统的操作系统时都会出现主机密钥已更改”错误。
(这类似于问题Smoothest workflow to handle SSH host verification errors?但在这种情况下,我们已经决定在系统重建期间维护相同的密钥是我们最好的解决方案。)
现在,我有一个名为 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
、ssh_host_dsa_key
、ssh_host_rsa_key
等),如file
资源定义所暗示的那样。我的问题是,这感觉就像混合了代码和数据(因为所有主机密钥都位于模块目录中),每次我添加一组新主机时,我都必须再次提交到 Puppet VCS。有没有更好的方法来管理这些事情?
fileserver.conf
如果您想将 puppet 文件与 SSH 配置/密钥分开,您可以调整并基本上共享另一个仅用于 ssh 配置的目录。使用上面的配置,您的清单可能如下所示,文件将从
/srv/puppet/sshconfig/$fqdn/
.我的建议是你创建一个
module
或一个script
你上传你知道主机到external
服务器的地方,然后你sort -u
在这个文件中给出一个,不包括任何重复的条目,然后你上传这个文件到你所有的机器,当然要小心这也是新条目ssh_known_hosts
。