¿Cómo conectar a GitHub utilizando diferentes archivos de identidad SSH?
Los archivos de identidad son parte del protocolo SSH que permite la administración segura de sistemas, transferencia de archivos y otras comunicaciones a través de Internet u otras redes inseguras.
SSH usa la autenticación de clave pública que depende de claves criptográficas para autenticar al servidor. Estas claves se almacenan en el directorio .ssh del usuario y son como contraseñas avanzadas que no pueden (no deberían) ser robadas en la red. Aunque en la práctica, muchas claves se usan para automatización y no requieren una frase de contraseña.
Si estás en ese punto donde trabajas para diversos clientes o proyectos y tienes que configurar diversas cuentas de GitHub para acceder a sus códigos fuentes, es muy seguro que ya estás en el punto en donde requieres de diferentes identidades SSH para acceder a estos sin afectar la seguridad.
Una de las formas en las que podemos lograr esto es actualizando tu archivo de configuración de SSH para que asocie el archivo de identificación con la cuenta que deseas utilizar.
Para esto procedemos a:
- Abrir el archivo de configuración del servicio de SSH con el editor de su preferencia. Utilizaré VIM para el siguiente ejemplo.
vim ~/.ssh/config
- Añadimos el alias que deseamos colocar con la cuenta asociada a su archivo de identidad. Esto podemos hacerlo de la siguiente forma:
[alias] puede ser reemplazado con el nombre que deseas utilizar para asociar la cuenta, por ejemplo, el nombre del cliente. github.com-seisigma
.
Guardamos nuestros cambios y cerramos el editor.
¿Cómo utilizamos esta configuración?
Para ilustrar el uso de esta configuración, nuestro alias tendrá el nombre de google, lo que nos daría el nombre del Host github.com-google
. Nuestro archivo de identificación tendrá el nombre de google-id_rsa. Esto nos daría el siguiente archivo de configuración:
Para disponer de un contexto visual, esta sería la forma normal de clonar un repositorio sin utilizar un alias:
git clone git@github.com:user/repo.git
Esta sería la forma en la que podemos llamar a un mismo repositorio si necesitáramos utilizar un archivo de identificación de nombre google-id_rsa para completar la conexión:
git clone git@github.com-google:user/repo.git
¡Listo! con este pequeño cambio podemos acceder a nuestro repositorio de manera segura.
Extras
¿Por qué debería utilizar diferentes archivos de identidad en cada cuenta SSH?
Todo se resume en seguridad. Si por alguna razón nuestra llave privada cae en manos equivocadas, pondría en riesgo el acceso a todos los recursos que compartan la llave pública asociada.
Otro punto importante es simplificar el proceso de desvinculación de una llave y el recurso asociado. Esto solo será posible si la llave se asocia a un único recurso.