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.

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.

Haz clic en el cuadro Add SSH key para guardarla.

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 git@github.com:TU_USUARIO/TU_REPOSITORIO.git

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.

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.

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.

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: InstallSSHKey@0
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.

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

¡Saludos!

Bootcamp DevOps
Si tienes ganas de meterte en el área de DevOps, formo parte del
equipo de docentes del Bootcamp DevOps Lemoncode, ¿Te animas a
aprender con nosotros?