Назад | Перейти на главную страницу

Марионетка использует ключ ssh мастера для git clone?

Я использую vcsrepo puppet модуль для синхронизации репозиториев git.

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

Он работает на главном сервере, где я сделал ключ RSA и загрузил открытый ключ в битбакет.

У меня много узлов агентов, поэтому было бы нецелесообразно вручную загружать ключи для каждого узла.

Есть ли обходной путь для этого, когда я могу использовать главный ключ 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

Таким образом, если пользователь просто нажимает / вытягивает это репо, он будет использовать конкретный ключ, но если они хотят клонировать свои личные данные из BitBucket, они могут просто использовать настоящие git@bitbucket.org:example/example.git, и он будет просто использовать их личный SSH-ключ (как обычно).