Compartilhar via


InstallSSHKey@0 – Instalar a tarefa de chave SSH v0

Use essa tarefa em um pipeline para instalar uma chave SSH antes de uma etapa de build ou versão.

Sintaxe

# 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.

Entradas

knownHostsEntry - Entrada de hosts conhecidos
Alias de entrada: hostName. string. Obrigatórios.

Especifica a entrada de chave SSH para o arquivo known_hosts.


sshPublicKey - Chave pública SSH
string.

Opcional. Especifica o conteúdo da chave SSH pública.


sshPublicKey - Chave pública SSH
string. Obrigatórios.

Especifica o conteúdo da chave SSH pública.


sshPassphrase - Senha SSH
string.

Opcional. Especifica a frase secreta para a chave SSH, se houver.


sshKeySecureFile - Chave SSH
string. Obrigatórios.

Especifica a chave SSH que foi carregada para Secure Files instalar no agente.


addEntryToConfig - Adicionar entrada à configuração SSH
boolean. Valor padrão: false.

Opcional. Adiciona uma entrada relacionada à chave que foi instalada no arquivo de configuração SSH. O arquivo de chave estará disponível para todas as tarefas subsequentes.


configHostAlias - Alias
string. Obrigatório quando addEntryToConfig = true.

Especifica o nome da entrada de configuração SSH.


configHostname - Nome do host
string. Obrigatório quando addEntryToConfig = true.

Especifica a propriedade de nome do host da entrada de configuração SSH.


configUser - Usuário
string. Opcional. Use quando addEntryToConfig = true.

Especifica a propriedade de nome de usuário da entrada de configuração SSH.


configPort - Porta
string. Opcional. Use quando addEntryToConfig = true.

Especifica a porta da entrada de configuração SSH.


hostName - Entrada de hosts conhecidos
string. Obrigatórios.

Especifica a entrada de chave SSH para o arquivo known_hosts.


Opções de controle de tarefa

Todas as tarefas têm opções de controle além de suas entradas de tarefa. Para obter mais informações, consulte Opções de controle e propriedades comuns da tarefa.

Variáveis de saída

Nenhum.

Comentários

Use essa tarefa em um pipeline para instalar uma chave SSH antes de uma etapa de build ou versão.

Observação

Essa tarefa exigia o Git Bash para Windows no agente.

Uso e práticas recomendadas

Se você instalar uma chave SSH nos pools hospedados, em etapas posteriores em seu pipeline, poderá se conectar a um sistema remoto no qual a chave pública correspondente já está em vigor. Por exemplo, você pode se conectar a um repositório Git ou a uma VM no Azure.

Recomendamos que você não passe sua chave pública como texto sem formatação para a configuração da tarefa. Em vez disso, defina uma variável secreta em seu pipeline para o conteúdo do mykey.pub arquivo. Em seguida, chame a variável em sua definição de pipeline como $(myPubKey). Para a parte secreta da sua chave, use a biblioteca de Arquivos Seguros no Azure Pipelines.

Para criar sua tarefa, use o seguinte exemplo de uma tarefa Bem configurada Instalar Chave SSH:

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

Observação

Sua chave pública deve ser adicionada ao repositório\organização; caso contrário, haverá problemas de acesso. Para o GitHub, siga o guia acima. Para Azure DevOps Services, use Adicionar a chave pública a Azure DevOps Services/TFS.

Instalação de várias chaves SSH no mesmo trabalho de pipeline

Ao usar mais de uma chave no mesmo trabalho de pipeline, a primeira é usada por padrão. Para poder usar a chave desejada ao estabelecer uma conexão SSH, você pode usar a Advanced seção da InstallSSHKey tarefa para definir os seguintes parâmetros: addEntryToConfig, configHostAlias, configHostname, configUsere configPort.

Esses parâmetros permitem que você adicione um host ao arquivo de configuração SSH (por exemplo, /root/.ssh/config para Linux) para usá-lo em scripts personalizados por meio de um alias.

Depois que o build for concluído, a tarefa tentará restaurar o arquivo de configuração SSH original. Se não houver nenhum arquivo de configuração SSH inicialmente, o host será removido do agente.

Um exemplo de instalação de várias chaves SSH. O caso com vários repositórios GitHub e sua própria chave para cada um deles:

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

Documentos relacionados do GitHub.

Exemplos

Configuração de exemplo usando o GitHub

Esta seção descreve como usar um repositório GitHub privado com YAML de dentro do Azure Pipelines.

Se você tiver um repositório que não deseja expor à comunidade de software livre, uma prática comum é tornar o repositório privado. No entanto, uma ferramenta de CI/CD como o Azure DevOps precisará acessar o repositório se você quiser usar a ferramenta para gerenciar o repositório. Para conceder acesso ao Azure DevOps, talvez seja necessário uma chave SSH para autenticar o acesso ao GitHub.

Estas são as etapas para usar uma chave SSH para autenticar o acesso ao GitHub:

  1. Gere um par de chaves a ser usado para autenticar o acesso do GitHub ao Azure DevOps:

    1. No GitBash, execute o seguinte comando:

      ssh-keygen -t rsa
      
    2. Insira um nome para o par de chaves SSH. Em nosso exemplo, usamos myKey.

      Captura de tela do prompt do GitBash para inserir um nome para o par de chaves SSH.

    3. (Opcional) Você pode inserir uma frase secreta para criptografar sua chave privada. Esta etapa é opcional. Usar uma frase secreta é mais seguro do que não usar uma.

      Captura de tela do prompt do GitBash para inserir uma frase secreta para o par de chaves SSH.

      ssh-keygen cria os pares de chaves SSH e a seguinte mensagem de êxito é exibida:

      Captura de tela da mensagem do GitBash que mostra que um par de chaves SSH foi criado.

    4. No Windows Explorador de Arquivos, verifique o par de chaves recém-criado:

      Captura de tela dos arquivos de par de chaves no Windows Explorador de Arquivos.

  2. Adicione a chave pública ao repositório GitHub. (A chave pública termina em ".pub"). Para fazer isso, acesse a seguinte URL no navegador: https://github.com/(organization-name)/(repository-name)/settings/keys.

    1. Selecione Adicionar chave de implantação.

    2. Na caixa de diálogo Adicionar novo , insira um título e copie e cole a chave SSH:

      Captura de tela da caixa de diálogo Adicionar novo.

    3. Selecione Adicionar chave.

  3. Carregue sua chave privada no Azure DevOps:

    1. No Azure DevOps, no menu à esquerda, selecioneBibliotecade Pipelines>.

      Captura de tela do menu Azure Pipelines.

    2. Selecione Arquivos seguros>+ Arquivo seguro:

      Captura de tela do menu Proteger arquivos.

    3. Selecione Procurar e, em seguida, selecione sua chave privada:

      Captura de tela da caixa de diálogo Carregar arquivo e do botão Procurar.

  4. Recupere sua "Entrada de Hosts Conhecidos". No GitBash, insira o seguinte comando:

    ssh-keyscan github.com
    

    Sua "Entrada de Hosts Conhecidos" é o valor exibido que não começa com # nos resultados do GitBash:

    Captura de tela dos principais resultados da pesquisa no GitBash.

  5. Criar um pipeline YAML.

    Para criar um pipeline YAML, na definição yaml, adicione a seguinte tarefa:

    - 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}
    

As chaves SSH agora estão instaladas e você pode continuar com o script para se conectar usando SSH e não o HTTPS padrão.

Requisitos

Requisito Descrição
Tipos de pipeline YAML, build clássico, versão clássica
É executado em Agent, DeploymentGroup
Demandas Nenhum
Funcionalidades Essa tarefa não atende a nenhuma demanda por tarefas subsequentes no trabalho.
Restrições de comando Esta tarefa é executada usando as seguintes restrições de comando: restrito
Variáveis configuráveis Essa tarefa tem permissão para definir as seguintes variáveis: SSH_AGENT_PID, SSH_AUTH_SOCK, INSTALL_SSH_KEY_CONFIG_LOCATION INSTALL_SSH_KEY_KNOWN_HOSTS_LOCATION
Versão do agente 2.182.1 ou superior
Categoria da tarefa Utilitário
Requisito Descrição
Tipos de pipeline YAML, build clássico, versão clássica
É executado em Agent, DeploymentGroup
Demandas Nenhum
Funcionalidades Essa tarefa não atende a nenhuma demanda por tarefas subsequentes no trabalho.
Restrições de comando Qualquer
Variáveis configuráveis Qualquer
Versão do agente 2.117.0 ou superior
Categoria da tarefa Utilitário