GitHub: 2FA y claves SSH

Incrementa la seguridad de tu cuenta de GitHub

Roberto Lodeiro

En pleno siglo XXI, los ataques a servicios y dispositivos están a la orden del día, por lo que no está de más revisar las configuraciones de seguridad de los mismos.

En esta entrada vamos a ver como incrementar la seguridad en nuestra cuenta de GitHub y como realizar la autenticación mediante una clave SSH.


1. 2FA

La autenticación de dos factores no es un requisito para poder utilizar la clave SSH en GitHub, sin embargo, lo recomiendo encarecidamente ya que es la forma que tenemos para incrementar la seguridad de nuestra cuenta.

Como veremos a continuación, podremos elegir entre distintas posibilidades de autenticación.

  • Primero pinchamos en los Ajustes de nuestra cuenta, y vamos a Seguridad de la cuenta:

  • Pinchamos en el botón verde que dice Habilitar autenticación de dos factores lo cual nos llevará a la siguiente pantalla:

Aquí nos da la posibilidad de utilizar una app de autenticación de dos factores, o hacerlo mediante SMS. Recomiendo elegir la primera opción, en concreto con la aplicación FreeOTP de Red Hat, ya que está disponible tanto para Android como para iOS y es Open Source.

Elegimos entonces Configurar usando una app en el botón verde. Esto nos llevará a la siguiente página, donde se nos darán varios códigos de un solo uso que debemos guardar en un lugar confiable. Son muy importantes, ya que será la única forma de iniciar sesión si perdemos el dispositivo de doble autenticación.

Una vez guardemos los códigos podemos pulsar siguiente, aquí nos saldrá un código QR para escanear con nuestra app de autenticación, y esta ya nos dará el código generado que debemos introducir para verificar el proceso. Pulsamos en el botón verde de Habilitar.

  • Volvemos a Seguridad de la cuenta

Aquí vemos que la autenticación de dos factores ya está habilitada y que podemos agregar más métodos de autenticación. En mi caso tengo agregadas también llaves de seguridad Fido.

2. Clave SSH

Solo será obligatorio tener una clave SSH para autenticarnos si tenemos habilitada la autenticación de dos factores, aunque se puede utilizar sin tenerla habilitada 2FA.

Esta clave SSH la generaremos en nuestro sistema, y después configuraremos el mismo para que las utilice con GitHub. También tendremos que indicarle a GitHub cual es nuestra clave SSH para que la acepte como válida.

  • Generamos la clave SSH:
$ ssh-keygen -t rsa -b 4096 -C tucorreo@dominio.com

Es importante poner el mismo correo electrónico que utilizamos en GitHub.

Se nos pedirá el nombre del archivo donde guardar la clave, y una passphrase que será la contraseña que utilizaremos para poder usar nuestra clave SHH. La passphrase no es obligatoria, pero si muy recomendable.

Generating public/private rsa key pair.
Enter file in which to save the key (/home/usuario/.ssh/id_rsa): test
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in test.
Your public key has been saved in test.pub.

Ya tenemos la clave SSH generada, en un archivo la privada y en otro la pública, que en mi caso son test y test.pub respectivamente. Recomiendo moverlas al directorio .ssh dentro del $HOME de nuestro usuario, para tenerlas localizadas.

Ahora, configuramos nuestra máquina para que utilice esta clave con GitHub.

  • Estando en el $HOME de nuestro usuario, editamos el archivo de configuracion de SSH:
$ nano .ssh/config

Y pegamos dentro lo siguiente, indicando correctamente el nombre de nuestra clave privada, en mi caso test:

Host github.com
User git
IdentityFile ~/.ssh/test

Con esto, cada vez que nos autentiquemos en GitHub mediante SSH, nuestro sistema utilizará esta clave.

  • Por último, volvemos a los Ajustes de nuestra cuenta de GitHub, entramos en el apartado Claves SSH y GPG, y pinchamos en el botón verde de Nueva clave SSH:

Tenemos que ponerle un título, que sea por ejemplo identificativo de la máquina donde usamos la clave, y en clave pegamos el contenido de la clave pública que generamos anteriormente, en mi caso test.pub.

Con esto, ya tenemos nuestra cuenta de GitHub más segura, y hemos habilitado un método de autenticación mediante clave SSH.

Por supuesto podemos generar todas las claves SSH que queramos siguiendo este proceso, para utilizarlas en distintas máquinas, o bien utilizar la misma clave SSH en todas nuestras máquinas. ¡Queda a tu elección!.


Espero que sea útil, ¡gracias por leerme!