Puppet 使用 master 的 ssh 密钥进行 git 克隆?

Puppet 使用 master 的 ssh 密钥进行 git 克隆?

我正在使用回购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 密钥(通常如此)。

相关内容