Cómo utilizar SSH durante sus compilaciones

A veces es posible que desee conectar diferentes máquinas durante la compilación de un proyecto. Por ejemplo, para desencadenar un script de despliegue en una máquina remota a través de SSH.

Aprendamos cómo se hace.

¿Por qué utilizar SSH?

Secure Shell (SSH) se utiliza ampliamente para distintos propósitos debido a su seguridad, versatilidad y eficacia. Existen diversos motivos para utilizar SSH

  • Comunicación segura. SSH proporciona comunicación cifrada a través de una red insegura (como Internet), lo cual garantiza la confidencialidad e integridad de los datos durante la transmisión.
  • Autenticación. SSH utiliza criptografía de clave pública para la autenticación de usuarios, lo que ofrece una alternativa más segura a la autenticación basada en contraseñas. Esto ayuda a proteger contra el acceso no autorizado.
  • Acceso remoto. SSH permite a los usuarios acceder a un servidor o máquina remotos de forma segura y proporciona una interfaz de línea de comandos o permite la transferencia de archivos (por ejemplo, con herramientas como SCP o SFTP).
  • Tunelización. SSH puede crear túneles seguros para reenviar conexiones de red arbitrarias y proporciona una forma segura de acceder a servicios como bases de datos o servidores web en redes remotas.
  • Gestión de claves. SSH admite el uso de claves SSH, lo que simplifica y mejora la seguridad en la autenticación. También permite gestionar el acceso mediante pares de claves.

Cómo cargar una clave SSH en TeamCity

Vaya a Edit configuration | Build Steps para echar un vistazo rápido a sus pasos de compilación.

tutorials-img

Imagine que desea añadir un paso de compilación en la línea de comandos que ejecute un despliegue. Para ello, TeamCity se conecta a un servidor remoto a través de SSH y ejecuta un par de comandos en ese servidor, por ejemplo, para descargar un archivo de Amazon S3 y ejecutarlo. Para que la conexión SSH funcione, debe especificar una clave SSH.

tutorials-img

La pregunta aquí es: ¿Cómo llega la clave SSH a su agente de compilación si no está preconfigurada en su imagen de agente?

Lo que queremos hacer es deshacernos del paso de compilación de la línea de comandos. Para ello, haga clic en el menú desplegable Runner type. Aquí, observará dos opciones: SSH Exec y SSH Upload.

SSH Exec es práctico para cuando desea ejecutar algo en una máquina remota. SSH Upload le ayuda a subir archivos de forma segura a un servidor.

Elijamos la opción SSH Exec y añadamos el objetivo y los comandos para el ejecutor.

tutorials-img

Aquí, en Authentication method, tiene unas cuantas opciones para elegir de dónde procede su clave SSH.

tutorials-img

Uploaded key: La clave se carga en el servidor de TeamCity. El servidor la encriptará, la enviará al agente de compilación para la compilación y la borrará una vez finalizada la compilación.

Default private key y Custom private key: Elija esta opción si tiene una clave privada predeterminada preinstalada en ubicaciones específicas de su agente de compilación.

También puede elegir una combinación de nombre de usuario y contraseña o incluso tener un agente SSH en ejecución. Más información sobre SSH Exec en nuestra documentación.

En este tutorial, vamos a optar por la opción Uploaded key. Estableceremos el nombre de usuario como teamcity-deploy y omitiremos la configuración de la frase de contraseña. A continuación, subiremos la clave SSH.

tutorials-img

Para cargar la clave SSH, vayamos a Buildpipelines project | SSH Keys. Después, seleccionaremos la clave privada para nuestro servidor. Haga clic en Upload SSH Key y seleccione un archivo de su ordenador.

tutorials-img

Después, vuelva a Build steps | SSH Exec y seleccione la clave privada que acaba de cargar. A continuación, pulse Save y ejecute la compilación.

tutorials-img

Una vez que la compilación termine de ejecutarse, abra el Build Log y verá el resultado del paso de compilación SSH Exec. Aquí podemos ver que TeamCity ejecutó el comando que usted introdujo en la configuración del paso de compilación. También le mostrará el resultado del comando echo 'running deploy.sh...'.

tutorials-img

¡Eso es todo!