Ssh

Puppet 使用 master 的 ssh 密鑰進行 git clone?

  • May 1, 2017

我正在使用vcsrepo puppet 模組來同步 git 儲存庫。

 # install git repo
 vcsrepo { "/home/repo":
   ensure   => present,
   provider => git,
   source   => "git@bitbucket.org:pk2klic/test.git",
 }

它在我製作了 RSA 密鑰並將公鑰上傳到 bitbucket 的主伺服器上執行。

我有很多代理節點,因此手動上傳每個節點的密鑰是不切實際的。

是否有解決方法,我可以在應用我的 puppet 文件時使用 master 的 ssh 密鑰進行複製?還是我最好嘗試創建一個自動化過程來在每個節點上創建新密鑰?

理想情況下,您需要為每個節點創建新密鑰。這就是基於密鑰的 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 儲存庫所做的更改。我使用的是別名bitbucket而不是真實的主機名。真實主機名在.ssh/config文件中設置。我假設您已將共享私鑰放入~/.ssh/id_rsa-bitbucket

這樣,如果使用者只是推/拉該 repo,它將使用特定的密鑰,但如果他們想從 BitBucket 複製他們自己的個人資料,他們可以只使用 real git@bitbucket.org:example/example.git,它只會使用他們的個人 SSH 密鑰(如它通常會)。

引用自:https://serverfault.com/questions/847619