Compartir vía


InstallSSHKey@0: tarea Instalar la clave SSH v0

Use esta tarea en una canalización para instalar una clave SSH antes de un paso de compilación o versión.

Sintaxis

# 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 conocidos
Alias de entrada: hostName. string. Obligatorio.

Especifica la entrada de clave SSH para el archivo known_hosts.


sshPublicKey - Clave pública SSH
string.

Opcional. Especifica el contenido de la clave SSH pública.


sshPublicKey - Clave pública SSH
string. Obligatorio.

Especifica el contenido de la clave SSH pública.


sshPassphrase - Frase de contraseña SSH
string.

Opcional. Especifica la frase de contraseña para la clave SSH, si existe.


sshKeySecureFile - Clave SSH
string. Obligatorio.

Especifica la clave SSH que se cargó para Secure Files instalar en el agente.


addEntryToConfig - Adición de una entrada a la configuración de SSH
boolean. Valor predeterminado: false.

Opcional. Agrega una entrada relacionada con la clave que se instaló en el archivo de configuración ssh. El archivo de clave estará disponible para todas las tareas posteriores.


configHostAlias - Alias
string. Obligatorio cuando addEntryToConfig = true.

Especifica el nombre de la entrada de configuración ssh.


configHostname - Nombre de host
string. Obligatorio cuando addEntryToConfig = true.

Especifica la propiedad de nombre de host de la entrada de configuración ssh.


configUser - Usuario
string. Opcional. Use cuando addEntryToConfig = true.

Especifica la propiedad de nombre de usuario de la entrada de configuración ssh.


configPort - Puerto
string. Opcional. Use cuando addEntryToConfig = true.

Especifica el puerto de la entrada de configuración ssh.


hostName - Entrada de hosts conocidos
string. Obligatorio.

Especifica la entrada de clave SSH para el archivo known_hosts.


Opciones de control de tareas

Todas las tareas tienen opciones de control además de sus entradas de tareas. Para obtener más información, vea Opciones de control y propiedades de tareas comunes.

Variables de salida

Ninguno.

Observaciones

Use esta tarea en una canalización para instalar una clave SSH antes de un paso de compilación o versión.

Nota

Esta tarea requería Git Bash para Windows en el agente.

Uso y procedimientos recomendados

Si instala una clave SSH en los grupos hospedados, en pasos posteriores de la canalización, puede conectarse a un sistema remoto en el que la clave pública coincidente ya está implementada. Por ejemplo, puede conectarse a un repositorio de Git o a una máquina virtual en Azure.

Se recomienda no pasar la clave pública como texto sin formato a la configuración de la tarea. En su lugar, establezca una variable secreta en la canalización para el contenido del mykey.pub archivo. A continuación, llame a la variable en la definición de canalización como $(myPubKey). Para la parte secreta de la clave, use la biblioteca de archivos seguros en Azure Pipelines.

Para crear la tarea, use el ejemplo siguiente de una tarea Instalar clave SSH bien configurada:

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

Nota

La clave pública debe agregarse al repositorio\organización; de lo contrario, habrá problemas de acceso. Para GitHub, siga la guía anterior. Para Azure DevOps Services, use Agregar la clave pública a Azure DevOps Services/TFS.

Instalación de varias claves SSH en el mismo trabajo de canalización

Cuando se usa más de una clave en el mismo trabajo de canalización, la primera se usa de forma predeterminada. Para poder usar la clave deseada al establecer una conexión SSH, puede usar la Advanced sección de la InstallSSHKey tarea para establecer los parámetros siguientes: addEntryToConfig, configHostAlias, configHostname, configUsery configPort.

Estos parámetros permiten agregar un host al archivo de configuración ssh (por ejemplo, /root/.ssh/config para Linux) para usarlo en scripts personalizados a través de un alias.

Una vez completada la compilación, la tarea intentará restaurar el archivo de configuración DE SSH original. Si no hay ningún archivo de configuración SSH inicialmente, el host se quita del agente.

Ejemplo de instalación de varias claves SSH. El caso con varios repositorios de GitHub y su propia clave para cada uno:

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

Documentación relacionada de GitHub.

Ejemplos

Configuración de ejemplo con GitHub

En esta sección se describe cómo usar un repositorio privado de GitHub con YAML desde Azure Pipelines.

Si tiene un repositorio que no desea exponer a la comunidad de código abierto, una práctica habitual es hacer que el repositorio sea privado. Sin embargo, una herramienta de CI/CD como Azure DevOps necesita acceso al repositorio si desea usar la herramienta para administrar el repositorio. Para conceder acceso a Azure DevOps, es posible que necesite una clave SSH para autenticar el acceso a GitHub.

Estos son los pasos para usar una clave SSH para autenticar el acceso a GitHub:

  1. Genere un par de claves que se usará para autenticar el acceso desde GitHub a Azure DevOps:

    1. En GitBash, ejecute el siguiente comando:

      ssh-keygen -t rsa
      
    2. Escriba un nombre para el par de claves SSH. En nuestro ejemplo, usamos myKey.

      Captura de pantalla del símbolo del sistema de GitBash para escribir un nombre para el par de claves SSH.

    3. (Opcional) Puede escribir una frase de contraseña para cifrar la clave privada. Este paso es opcional. El uso de una frase de contraseña es más seguro que no usar una.

      Captura de pantalla del símbolo del sistema de GitBash para escribir una frase de contraseña para el par de claves SSH.

      ssh-keygen crea los pares de claves SSH y aparece el siguiente mensaje de operación correcta:

      Captura de pantalla del mensaje de GitBash que muestra que se creó un par de claves SSH.

    4. En Windows Explorador de archivos, compruebe el par de claves recién creado:

      Captura de pantalla de los archivos de par de claves en Windows Explorador de archivos.

  2. Agregue la clave pública al repositorio de GitHub. (La clave pública termina en ".pub"). Para ello, vaya a la siguiente dirección URL en el explorador: https://github.com/(organization-name)/(repository-name)/settings/keys.

    1. Seleccione Agregar clave de implementación.

    2. En el cuadro de diálogo Agregar nuevo , escriba un título y copie y pegue la clave SSH:

      Captura de pantalla del cuadro de diálogo Agregar nuevo.

    3. Seleccione Agregar clave.

  3. Cargue la clave privada en Azure DevOps:

    1. En Azure DevOps, en el menú izquierdo, seleccione Biblioteca de canalizaciones>.

      Captura de pantalla del menú de Azure Pipelines.

    2. Seleccione Archivos seguros+ Archivo> seguro:

      Captura de pantalla del menú Archivos seguros.

    3. Seleccione Examinar y, a continuación, seleccione la clave privada:

      Captura de pantalla del cuadro de diálogo Cargar archivo y el botón Examinar.

  4. Recupere la "Entrada de hosts conocidos". En GitBash, escriba el siguiente comando:

    ssh-keyscan github.com
    

    La "Entrada de hosts conocidos" es el valor mostrado que no comienza por # en los resultados de GitBash:

    Captura de pantalla de los resultados de búsqueda clave en GitBash.

  5. Cree una canalización YAML.

    Para crear una canalización YAML, en la definición de YAML, agregue la siguiente tarea:

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

Las claves SSH ahora están instaladas y puede continuar con el script para conectarse mediante SSH y no con el HTTPS predeterminado.

Requisitos

Requisito Descripción
Tipos de canalización YAML, compilación clásica, versión clásica
Se ejecuta en Agente, DeploymentGroup
Peticiones None
Capabilities Esta tarea no satisface ninguna demanda de tareas posteriores en el trabajo.
Restricciones de comandos Esta tarea se ejecuta con las siguientes restricciones de comandos: restringido
Variables que se pueden establecer Esta tarea tiene permiso para establecer las siguientes variables: SSH_AGENT_PID, SSH_AUTH_SOCK, INSTALL_SSH_KEY_CONFIG_LOCATION, INSTALL_SSH_KEY_KNOWN_HOSTS_LOCATION
Versión del agente 2.182.1 o superior
Categoría de la tarea: Utilidad
Requisito Descripción
Tipos de canalización YAML, compilación clásica, versión clásica
Se ejecuta en Agente, DeploymentGroup
Peticiones None
Capabilities Esta tarea no satisface ninguna demanda de tareas posteriores en el trabajo.
Restricciones de comandos Any
Variables que se pueden establecer Any
Versión del agente 2.117.0 o superior
Categoría de la tarea: Utilidad