我正在使用回购puppet 模块同步 git 存储库。
# install git repo
vcsrepo { "/home/repo":
ensure => present,
provider => git,
source => "[email protected]:pk2klic/test.git",
}
它在主服务器上工作,我在该服务器上创建了一个 RSA 密钥并将公钥上传到 bitbucket。
我有许多代理节点,因此为每个节点手动上传密钥是不切实际的。
有没有一种解决方法,让我可以在应用我的 puppet 文件时使用主服务器的 ssh 密钥进行克隆?还是我最好尝试创建一个在每个节点上创建新密钥的自动化流程?
答案1
理想情况下,您需要为每个节点创建新密钥。这就是基于密钥的 SSH 身份验证的重点。
如果单个服务器受到威胁,您可以不再信任该特定密钥,替换它并继续。
现在,如果你真的如果你想按照你建议的方式,使用单个密钥,那么你需要确保私钥在每个主机上。我将把这留作练习,让你弄清楚如何做到这一点。
然后,您需要配置~/.ssh/config
以指定访问该存储库时要使用的密钥。您可能需要执行以下操作:
你的傀儡配置:
# install git repo
vcsrepo { "/home/repo":
ensure => present,
provider => git,
source => "git@bitbucket:pk2klic/test.git",
}
和~/.ssh/config
:
Host bitbucket
Hostname bitbucket.org
IdentityFile ~/.ssh/id_rsa-bitbucket
IdentitiesOnly yes
请注意我在此处对 git repo 所做的更改。我使用的是别名bitbucket
而不是真实主机名。真实主机名在文件中设置.ssh/config
。我假设您已将共享私钥放入~/.ssh/id_rsa-bitbucket
这样,如果用户只是在该 repo 中推送/拉取,它将使用特定的密钥,但如果他们想从 BitBucket 克隆自己的个人数据,他们只需使用真实的密钥[email protected]:example/example.git
,它就会使用他们的个人 SSH 密钥(通常如此)。