Ssh
Puppet 使用 master 的 ssh 密鑰進行 git clone?
我正在使用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 密鑰(如它通常會)。