Tarea Copiar archivos a través de SSH

Azure Pipelines | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018 | TFS 2017

Use esta tarea para copiar archivos de una carpeta de origen a una carpeta de destino en un equipo remoto a través de SSH.

Esta tarea le permite conectarse a un equipo remoto mediante SSH y copiar archivos que coincidan con un conjunto de patrones de minimatch desde la carpeta de origen especificada a la carpeta de destino en el equipo remoto. Los protocolos admitidos para la transferencia de archivos son SFTP y SCP a través de SFTP. Además de Linux, macOS se admite parcialmente (consulte las preguntas más frecuentes).

Nota

En Microsoft Team Foundation Server (TFS) 2018 y versiones anteriores, las canalizaciones de compilación y versión se denominan definiciones, las ejecuciones se denominan compilaciones, las conexiones de servicio se denominan puntos de conexión de servicio, las fases se denominan entornos y los trabajos se denominan fases.

Requisitos previos

  • La tarea admite el uso de un par de claves SSH para conectarse a las máquinas remotas.
  • La clave pública debe estar preinstalada o copiada en las máquinas remotas.

Fragmento de código YAML

# Copy files over SSH
# Copy files or build artifacts to a remote machine over SSH
- task: CopyFilesOverSSH@0
  inputs:
    sshEndpoint: 
    #sourceFolder: # Optional
    #contents: '**' 
    #targetFolder: # Optional
    #cleanTargetFolder: false # Optional
    #overwrite: true # Optional
    #failOnEmptySource: false # Optional
    #flattenFolders: false # Optional

Argumentos

Argumento Descripción
Punto de conexión SSH Nombre de una conexión de servicio SSH que contiene los detalles de conexión de la máquina remota.
- El nombre de host o la dirección IP de la máquina remota, el número de puerto y el nombre de usuario son necesarios para crear una conexión de servicio SSH.
- La clave privada y la frase de contraseña deben especificarse para la autenticación.
Carpeta de origen Carpeta de origen de los archivos que se copian en el equipo remoto. Si se omite, se usa la raíz del repositorio. No se admiten nombres que contengan caracteres *.zip comodín. Use variables si los archivos no están en el repositorio. Ejemplo: $(Agent.BuildDirectory)
Contents Rutas de acceso de archivo que se incluirán como parte de la copia. Admite varias líneas de patrones de minimatch. El valor ** predeterminado es que incluye todos los archivos (incluidas las subcarpetas) en la carpeta de origen.
- Ejemplo: **/*.jar \n **/*.war incluye todos los archivos jar y war (incluidas las subcarpetas) en la carpeta de origen.
- Ejemplo: ** \n !**/*.xml incluye todos los archivos (incluidas las subcarpetas) en la carpeta de origen, pero excluye los archivos XML.
Carpeta de destino Carpeta de destino del equipo remoto en la que se copiarán los archivos. Ejemplo: /home/user/MySite. Precedida de una tilde ( ~ ) para especificar el directorio principal del usuario.
Avanzado: limpieza de la carpeta de destino Si se selecciona esta opción, se eliminarán todos los archivos existentes en la carpeta de destino antes de copiarlos.
Avanzado: sobrescritura Si se selecciona esta opción (el valor predeterminado), se reemplazarán los archivos existentes en la carpeta de destino.
Avanzado: aplanar carpetas Si se selecciona esta opción, la estructura de carpetas no se conserva y todos los archivos se copiarán en la carpeta de destino especificada en el equipo remoto.
Opciones de control Consulte Opciones de control.

Algoritmos admitidos

Algoritmos de par de claves

  • RSA
  • DSA

Algoritmos de cifrado

  • aes256-cbc
  • aes192-cbc
  • aes128-cbc
  • fishfish-cbc
  • 3des-cbc
  • arcfour256
  • arcfour128
  • cast128-cbc
  • arcfour

Para OpenSSL v1.0.1 y posteriores (en el agente):

  • aes256-ctr
  • aes192-ctr
  • aes128-ctr

Para OpenSSL v1.0.1 y posteriores, NodeJS v0.11.12 y posteriores (en el agente):

  • aes128-gcm
  • aes128-gcm@openssh.com
  • aes256-gcm
  • aes256-gcm@openssh.com

Vea también

Código Abierto

Esta tarea es de código abierto en GitHub. Los comentarios y las contribuciones son bienvenidos.

Preguntas más frecuentes

¿Qué formatos de clave se admiten para las tareas SSH?

Las Azure Pipelines SSH usan el paquete Node.js ssh2 para las conexiones SSH. Asegúrese de que usa la versión más reciente de las tareas ssh. Es posible que las versiones anteriores no admitan el formato de clave OpenSSH.

Si se produce un error de "Formato de clave no compatible", es posible que tenga que agregar la marca al comando para que la clave esté en -m PEMssh-keygen un formato admitido.

¿Necesito un agente?

Necesita al menos un agente para ejecutar la compilación o versión.

Tengo problemas. ¿Cómo puedo solucionarlos?

Vea Solución de problemas de compilación y versión.

No se puede seleccionar un grupo de agentes predeterminado y no se puede poner en cola la compilación o versión. ¿Cómo puedo corregirlo?

Vea Grupos de agentes.

La tarea de envío de cambios de NuGet genera el error siguiente: "Error: no se puede obtener el certificado del emisor local". ¿Cómo lo puedo corregir?

Esto se puede corregir si se añade un certificado raíz de confianza. Puede agregar la variable de entorno NODE_EXTRA_CA_CERTS=file al agente de compilación, o bien la variable de tarea NODE.EXTRA.CA.CERTS=file en la canalización. Vea la documentación de Node.js para obtener más detalles sobre esta variable. Consulte Establecimiento de variables en una canalización para obtener instrucciones sobre cómo establecer una variable en la canalización.

¿Esta tarea es compatible con máquinas de destino que ejecutan sistemas operativos distintos de Linux?

Esta tarea está pensada para máquinas de destino que ejecutan Linux.

  • Para copiar archivos en un equipo macOS, se puede usar esta tarea, pero no se admite la autenticación con una contraseña.
  • Para copiar archivos en un equipo Windows, considere la posibilidad de usar Windows copia de archivos de equipo.

Utilizo TFS en el entorno local y no veo algunas de estas características. ¿Por qué no?

Algunas de estas características solo están disponibles en Azure Pipelines y todavía no lo están en el entorno local. Algunas características están disponibles en el entorno local si ha actualizado a la versión más reciente de TFS.