Instalar una clave SSH en Azure DevOps

Este artículo viene por unas dudas que me llegaron, respecto a la forma de instalar una clave SSH para el acceso a repositorios privados desde Azure DevOps. Existe documentación oficial al respecto, pero si nunca has tenido que lidiar con este escenario quizás te resulte un poco escueta. Vamos a ver el paso a paso de cómo conseguir todo lo que necesitamos y cómo se configura en la tarea de Azure DevOps.

Crear una clave SSH

Lo primero que necesitas es una clave SSH. Puedes crearla fácilmente a través del comando ssh-keygen, el cual te pedirá un nombre para tu clave y una frase, que es opcional. El resultado serán dos archivos: mykey y mykey.pub. El primero de ellos es la clave privada y el segundo la pública.

Subir la clave pública a GitHub

En este ejemplo nuestro repositorio privado está en GitHub, por lo que el siguiente paso es subir la clave pública a este. Accede a tu cuenta y haz clic en el apartado Settings.

GitHub – Settings

En el apartado SSH and GPG keys es donde debes subir la clave pública, a través del botón New SSH key, pero ¿cómo si es un cuadro de texto? Fácil: visualiza el contenido de mykey.pub a través del comando cat para copiar y pegar la clave en el recuadro.

cat mykey.pub

Haz clic en el cuadro Add SSH key para guardarla.

GitHub – SSH and GPG keys – Add SSH key

Añadir tu clave privada a tu máquina local

Este paso es bien sencillo. Sólo tienes que lanzar el siguiente comando para añadir tu clave SSH privada a tu máquina local.

ssh-add mykey

Clonar tu repositorio privado en tu máquina local utilizando SSH

Ahora debes clonar tu repositorio privado, pero a través de SSH, no HTTPS como quizás venías haciendo. Para ello, accede a él en GitHub y haz clic en la opción SSH en el botón Clone or download. Copia el contenido de la caja de texto, que deberá ser algo parecido a [email protected]:TU_USUARIO/TU_REPOSITORIO.git

Clone or download – Use SSH

Esto es importante ya que necesitamos hacer uso de nuestra clave privada al menos una vez. Al realizar esta acción nos preguntará si estamos seguros de continuar con la conexión, ya que es la primera vez que contactamos con este host, que es github.com.

Clonando repositorio privado a través de SSH
Clonando repositorio privado a través de SSH

Al hacer esto se modificará el archivo known_hosts donde deberemos copiar la última línea añadida. Para ello, podemos hacer la misma operación que hicimos con mykey.pub: Haz un cat de archivo /Users/<username>/.ssh/known_hosts y cópiala.

Archivo known_hosts con el contenido que tienes que copiar

Ahora ya tienes todo lo que necesitas para configurar la tarea de Azure DevOps.

Configurar la tarea Install SSH Key

Ahora solo tienes que encajar las piezas que has ido consiguiendo por el camino en la tarea Install SSH Key.

Install SSH Key Task – Azure DevOps

En Known Hosts Entry debes copiar el contenido del archivo known_hosts, en SSH Public Key el contenido del archivo mykey.pub, si has elegido un passphrase se indica en el tercer campo. Por último, para SSH Key necesitas subir el archivo mykey, que es la clave privada. Con ello ya habrías instalado tu clave en la máquina que está haciendo la ejecución de tu pipeline.

Si estás trabajando con YAML, la misma configuración sería de la siguiente manera:

steps:
- task: [email protected]
  displayName: 'Install an SSH key'
  inputs:
    hostName: '<EL CONTENIDO DEL ARCHIVO KNOWN_HOSTS>'
    sshPublicKey: '<EL CONTENIDO DEL ARCHIVO MYKEY.PUB>'
    sshPassphrase: <TU PASSPHRASE>
    sshKeySecureFile: '<SECURE FIELD ID>'

Para el último campo, donde debes especificar tu clave privada, es importante saber que las claves que subes están localizadas en Library > Secure Files.

Azure DevOps – Library – Secure Files

Una vez subida, para recuperar el ID de una clave debes acceder a ella y la verás en la URL.

¡Saludos!