Поделиться через


InstallSSHKey@0— установка задачи SSH key v0

Используйте эту задачу в конвейере для установки ключа SSH до шага сборки или выпуска.

Синтаксис

# Install SSH key v0
# Install an SSH key prior to a build or deployment.
- task: InstallSSHKey@0
  inputs:
    knownHostsEntry: # string. Alias: hostName. Required. Known Hosts Entry. 
    #sshPublicKey: # string. SSH Public Key. 
    #sshPassphrase: # string. SSH Passphrase. 
    sshKeySecureFile: # string. Required. SSH Key. 
  # Advanced
    #addEntryToConfig: false # boolean. Add entry to SSH config. Default: false.
    #configHostAlias: # string. Required when addEntryToConfig = true. Alias. 
    #configHostname: # string. Required when addEntryToConfig = true. Host name. 
    #configUser: # string. Optional. Use when addEntryToConfig = true. User. 
    #configPort: # string. Optional. Use when addEntryToConfig = true. Port.
# Install SSH key v0
# Install an SSH key prior to a build or deployment.
- task: InstallSSHKey@0
  inputs:
    knownHostsEntry: # string. Alias: hostName. Required. Known Hosts Entry. 
    #sshPublicKey: # string. SSH Public Key. 
    #sshPassphrase: # string. SSH Passphrase. 
    sshKeySecureFile: # string. Required. SSH Key.

Входные данные

knownHostsEntry - запись известных узлов
Псевдоним ввода: hostName. string. Обязательное.

Указывает запись ключа SSH для файла known_hosts.


открытого ключа SSH sshPublicKey -
string.

Необязательно. Указывает содержимое открытого ключа SSH.


sshPassphrase - парольную фразу SSH
string.

Необязательно. Указывает парольную фразу для ключа SSH, если таковой есть.


ключа SSH sshKeySecureFile -
string. Обязательное.

Указывает ключ SSH, который был отправлен в Secure Files для установки на агент.


addEntryToConfig - Добавление записи в конфигурацию SSH
boolean. Значение по умолчанию: false.

Необязательно. Добавляет запись, связанную с ключом, установленным в файл конфигурации SSH. Файл ключа будет доступен для всех последующих задач.


configHostAlias - Псевдоним
string. Требуется, если addEntryToConfig = true.

Указывает имя записи конфигурации SSH.


configHostname - имя узла
string. Требуется, если addEntryToConfig = true.

Указывает свойство имени узла записи конфигурации SSH.


configUser - пользователя
string. Необязательно. Используется при addEntryToConfig = true.

Указывает свойство имени пользователя записи конфигурации SSH.


порт configPort -
string. Необязательно. Используется при addEntryToConfig = true.

Указывает порт записи конфигурации SSH.


Параметры управления задачами

Помимо входных данных, все задачи имеют параметры управления. Дополнительные сведения см. в разделе Параметры управления и общие свойства задач.

Выходные переменные

Нет.

Замечания

Используйте эту задачу в конвейере для установки ключа SSH до шага сборки или выпуска.

Примечание.

Эта задача требуется Git Bash для Windows в агенте.

Использование и рекомендации

Если вы устанавливаете ключ SSH в размещенных пулов, на последующих шагах в конвейере можно подключиться к удаленной системе, в которой уже установлен соответствующий открытый ключ. Например, можно подключиться к репозиторию Git или к виртуальной машине в Azure.

Рекомендуется не передавать открытый ключ в виде обычного текста в конфигурацию задачи. Вместо этого задать в конвейере переменную секрета для содержимого файла mykey.pub. Затем вызовите переменную в определении конвейера как $(myPubKey). Для секретной части ключа используйте библиотеку безопасных файлов в Azure Pipelines.

Чтобы создать задачу, используйте следующий пример хорошо настроенной задачи установки ключа SSH:

steps:
- task: InstallSSHKey@0
  displayName: 'Install an SSH key'
  inputs:
    knownHostsEntry: 'SHA256:1Hyr55tsxGifESBMc0s+2NtutnR/4+LOkVwrOGrIp8U johndoe@contoso'
    sshPublicKey: '$(myPubKey)'
    sshKeySecureFile: 'id_rsa'

Примечание.

Открытый ключ следует добавить в репозиторий\организацию; В противном случае будут проблемы с доступом. Для GitHub следуйте приведенном выше руководстве. Для Azure DevOps Services используйте добавить открытый ключ в Azure DevOps Services/TFS.

Установка нескольких ключей SSH в одном задании конвейера

При использовании нескольких ключей в одном задании конвейера первый используется по умолчанию. Чтобы использовать нужный ключ при установке подключения SSH, можно использовать раздел Advanced задачи InstallSSHKey для задания следующих параметров: addEntryToConfig, configHostAlias, configHostname, configUserи configPort.

Эти параметры позволяют добавить узел в файл конфигурации SSH (например, /root/.ssh/config для Linux), чтобы использовать его в пользовательских скриптах с помощью псевдонима.

После завершения сборки задача попытается восстановить исходный файл конфигурации SSH. Если изначально не было файла конфигурации SSH, узел удаляется из агента.

Пример установки нескольких ключей SSH. Дело с несколькими репозиториями GitHub и собственным ключом для каждого из них:

pool: <Some Agent Pool>

steps:
- task: InstallSSHKey@0
  inputs:
    knownHostsEntry: $(known_host)
    sshPublicKey: $(first_public_key)
    sshKeySecureFile: $(first_private_key)
    addEntryToConfig: true
    configHostAlias: <first-host-alias>
    configHostname: github.com
    configUser: git
  displayName: Install First Repo SSH Key

- task: InstallSSHKey@0
  inputs:
    knownHostsEntry: $(known_host)
    sshPublicKey: $(second_public_key)
    sshKeySecureFile: $(second_private_key)
    addEntryToConfig: true
    configHostAlias: <second-host-alias>
    configHostname: github.com
    configUser: git
  displayName: Install Second Repo SSH Key

- bash: git clone git@<first-host-alias>:<owner>/<first-repo>.git
  displayName: Clone First Repo

- bash: git clone git@<second-host-alias>:<owner>/<second-repo>.git
  displayName: Clone Second Repo

связанные документы GitHub.

Примеры

Пример настройки с помощью GitHub

В этом разделе описывается использование частного репозитория GitHub с YAML из Azure Pipelines.

Если у вас есть репозиторий, который вы не хотите предоставлять сообществу с открытым кодом, рекомендуется сделать репозиторий закрытым. Однако для управления репозиторием требуется доступ к средству CI/CD, например Azure DevOps. Чтобы предоставить Доступ к Azure DevOps, может потребоваться ключ SSH для проверки подлинности доступа к GitHub.

Ниже приведены действия по использованию ключа SSH для проверки подлинности доступа к GitHub:

  1. Создайте пару ключей для проверки подлинности доступа из GitHub в Azure DevOps:

    1. В GitBash выполните следующую команду:

      ssh-keygen -t rsa
      
    2. Введите имя пары ключей SSH. В нашем примере мы используем myKey.

      снимок экрана запроса GitBash, чтобы ввести имя пары ключей SSH.

    3. (Необязательно) Парольную фразу можно ввести для шифрования закрытого ключа. Этот шаг является необязательным. Использование парольной фразы является более безопасным, чем не используется.

      снимок экрана запроса GitBash, чтобы ввести парольную фразу для пары ключей SSH.

      ssh-keygen создает пары ключей SSH и появится следующее сообщение об успешном выполнении:

      снимок экрана сообщения GitBash, в котором показано, что была создана пара ключей SSH.

    4. В проводнике Windows проверьте только что созданную пару ключей:

      снимок экрана: файлы пар ключей в проводнике Windows.

  2. Добавьте открытый ключ в репозиторий GitHub. (Открытый ключ заканчивается в .pub"). Для этого перейдите по следующему URL-адресу в браузере: https://github.com/(organization-name)/(repository-name)/settings/keys.

    1. Щелкните Add deploy key (Добавить ключ развертывания).

    2. В диалоговом окне Добавление нового введите заголовок, а затем скопируйте и вставьте ключ SSH:

      снимок экрана: диалоговое окно

    3. Щелкните Добавить ключ.

  3. Отправьте закрытый ключ в Azure DevOps:

    1. В azure DevOps в меню слева выберите Pipelines>Library.

      снимок экрана меню Azure Pipelines.

    2. Выберите Безопасные файлы>+ Безопасный файл:

      снимок экрана меню

    3. Выберите Обзор, а затем выберите закрытый ключ:

      снимок экрана: диалоговое окно

  4. Восстановите запись известных узлов. В GitBash введите следующую команду:

    ssh-keyscan github.com
    

    Запись известных узлов — это отображаемое значение, которое не начинается с # в результатах GitBash:

    снимок экрана: результаты поиска ключей в GitBash.

  5. Создайте конвейер YAML.

    Чтобы создать конвейер YAML, добавьте следующую задачу:

    - task: InstallSSHKey@0
     inputs:
       knownHostsEntry: #{Enter your Known Hosts Entry Here}
       sshPublicKey: #{Enter your Public key Here}
       sshKeySecureFile: #{Enter the name of your key in "Secure Files" Here}
    

Теперь ключи SSH устанавливаются, и вы можете продолжить работу с скриптом для подключения с помощью SSH, а не HTTPS по умолчанию.

Требования

Требование Описание
Типы конвейеров YAML, классическая сборка, классический выпуск
Выполняется в Агент, DeploymentGroup
требования Нет
возможностей Эта задача не удовлетворяет требованиям к последующим задачам в задании.
ограничения команд Эта задача выполняется с помощью следующих ограничений команд : ограничено.
переменные settable Эта задача имеет разрешение на задать следующие переменные: SSH_AGENT_PID, SSH_AUTH_SOCK, INSTALL_SSH_KEY_CONFIG_LOCATION, INSTALL_SSH_KEY_KNOWN_HOSTS_LOCATION
Версия агента 2.182.1 или более поздней версии
Категория задач Полезность
Требование Описание
Типы конвейеров YAML, классическая сборка, классический выпуск
Выполняется в Агент, DeploymentGroup
требования Нет
возможностей Эта задача не удовлетворяет требованиям к последующим задачам в задании.
ограничения команд Любое
переменные settable Любое
Версия агента 2.117.0 или более поздней версии
Категория задач Полезность