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


InstallSSHKey@0 . Установка ключа SSH версии 0

Используйте эту задачу в конвейере для установки ключа 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.
# 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. Required. SSH Public Key. 
    #sshPassphrase: # string. SSH Passphrase. 
    sshKeySecureFile: # string. Required. SSH Key.
# Install SSH Key v0
# Install an SSH key prior to a build or release.
- task: InstallSSHKey@0
  inputs:
    hostName: # string. Required. Known Hosts Entry. 
    sshPublicKey: # string. Required. SSH Public Key. 
    #sshPassphrase: # string. SSH Passphrase. 
    sshKeySecureFile: # string. Required. SSH Key.

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

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

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


sshPublicKey - Открытый ключ SSH
string.

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


sshPublicKey - Открытый ключ SSH
string. Обязательный.

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


sshPassphrase - Парольная фраза SSH
string.

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


sshKeySecureFile - Ключ SSH
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.


hostName - Запись известных узлов
string. Обязательный.

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


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

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

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

Нет.

Remarks

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

Примечание

Для выполнения этой задачи требуется Git Bash для Windows в агенте.

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

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

Не рекомендуется передавать открытый ключ в виде обычного текста в конфигурацию задачи. Вместо этого задайте в конвейере переменную секрета для содержимого mykey.pub файла. Затем вызовите переменную в определении конвейера как $(myPubKey). Для секретной части ключа используйте библиотеку Secure File в 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 в меню слева выберите Библиотека конвейеров>.

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

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

      Снимок экрана: меню

    3. Нажмите кнопку Обзор, а затем выберите закрытый ключ:

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

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

    ssh-keyscan github.com
    

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

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

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

    Чтобы создать конвейер 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
Требования Нет
Capabilities Эта задача не удовлетворяет требованиям для последующих задач в задании.
Ограничения команд Эта задача выполняется с использованием следующих ограничений команд: restricted
Устанавливаемые переменные Эта задача имеет разрешение на задание следующих переменных: SSH_AGENT_PID, SSH_AUTH_SOCK, INSTALL_SSH_KEY_CONFIG_LOCATION INSTALL_SSH_KEY_KNOWN_HOSTS_LOCATION
Версия агента 2.182.1 или более поздней версии
Категория задач Служебная программа
Требование Описание
Типы конвейеров YAML, классическая сборка, классический выпуск
Выполняется в Агент, DeploymentGroup
Требования Нет
Capabilities Эта задача не удовлетворяет требованиям для последующих задач в задании.
Ограничения команд Любой
Устанавливаемые переменные Любой
Версия агента 2.117.0 или более поздней версии
Категория задач Служебная программа