Bienvenido a nuestra guía definitiva para configurar claves SSH (Secure Shell). Este tutorial te llevará a través de los puntos básicos para crear claves SSH y cómo administrar múltiples claves y pares-claves.

Crea un nuevo par claves SSH

Abre una terminal y ejecuta el siguiente comando:

ssh-keygen

Verás el siguiente texto:

// Generando clave par rsa pública/privada.
// Ingresa el archivo en cual guardar la clave (/home/nombre_usuario/.ssh/id_rsa):

Generating public/private rsa key pair.
Enter file in which to save the key (/home/username/.ssh/id_rsa):

Presiona enter para guardar tus claves al directorio por defecto /home/nombre_usuario/.ssh

Entonces se te requerirá que escribas tu contraseña:

// Ingresa una contraseña (vacío para guardar sin contraseña):
Enter passphrase (empty for no passphrase):

Es recomendable introducir una contraseña para contar con una capa extra de seguridad. Al configurar una contraseña puedes prevenir el acceso no autorizado a tus servidores y cuentas; en el caso que alguien llegara a tener acceso a tu clave privada SSH o a tu computadora.

Luego de introducir y confirmar tu contraseña, verás lo siguiente:

// Tu identificación ha sido guardada en /home/nombre_usuario/.ssh/id_rsa.
// Tu clave pública ha sido guardada en /home/username/.ssh/id_rsa.pub.
// La huella digital (fingerprint) de tu clave es:
// SHA256:/qRoWhRcIBTw0D4KpTUyK6YepyL6RQ2CQrtWsaicCb4 username@871e129f767b
// La imagen randomart (arte aleatorio) de tu clave es:

Your identification has been saved in /home/username/.ssh/id_rsa.
Your public key has been saved in /home/username/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:/qRoWhRcIBTw0D4KpTUyK6YepyL6RQ2CQrtWsaicCb4 username@871e129f767b
The key's randomart image is:
+---[RSA 2048]----+
| .o=+....        |
|+.*o+o .         |
|+X.=o o          |
|@.=.oo .         |
|=O ...o S        |
|o.oo . .         |
|.E+ . . . .      |
|oo . ... +       |
|=.. .o. . .      |
+----[SHA256]-----+

Ahora ya tienes un par de claves (privada y pública) que puedes usar para tener acceso a servidores remotos de manera segura y manejar la autenticación de programas de línea de comandos como Git.

Administra múltiples claves SSH

Aunque es considerado buena práctica tener un sólo par de claves pública-privada por dispositivo, a veces necesitas usar múltiples claves o tienes nombres para claves no-ortodoxos. Por ejemplo, podrías estar usando un par de claves SSH para trabajar en los proyectos internos de tu compañía, pero podrías estar usando una clave distinta para tener acceso a los servidores de un cliente. Además, podrías estar utilizando una clave diferente para tener acceso a tu propio servidor privado.

Administrar claves SSH puede tornarse difícil e incómodo tan pronto como necesites utilizar una segunda clave. Tradicionalmente, usarías  ssh-add para guardar tus claves en  ssh-agent, escribiendo la contraseña para cada clave. El problema es que necesitarías hacer esto cada vez que reinicies tu computadora, lo cual se vuelve tedioso rápidamente.

Una mejor solución es automatizar la adición y guardado de claves y especificar qué clave utilizar cuando se ingrese a ciertos servidores.

SSH config

Entra SSH config,  que es un archivo de configuración por-usuario para la comunicación SSH. Crea un nuevo archivo: ~/.ssh/config y ábrelo para escribir:

nano ~/.ssh/config

Administrando nombres personalizados de claves SSH

La primera cosa que vamos a resolver usando este archivo config es evitar tener que agregar nombres personalizados para las claves SSH usando ssh-add. Asumiendo que tu clave privada se llame  ~/.ssh/id_rsa, agrega lo siguiente al archivo config:

Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa
  IdentitiesOnly yes

A continuación, abre otra terminal para asegurarte que  ~/.ssh/id_rsa no esté en  ssh-agent y corre el siguiente comando:

ssh-add -D

Este comando removerá todas las claves de la sesión  ssh-agent actualmente activa.

Ahora si intentas clonar un repositorio GitHub, tu archivo config usará la clave en ~/.ssh/ida_rsa.

Aquí están otros ejemplos útiles de configuración:

Host bitbucket-corporate
        HostName bitbucket.org
        User git
        IdentityFile ~/.ssh/id_rsa_corp
        IdentitiesOnly yes

Ahora puedes usar  git clone git@bitbucket-corporate:company/project.git

Host bitbucket-personal
        HostName bitbucket.org
        User git
        IdentityFile ~/.ssh/id_rsa_personal
        IdentitiesOnly yes

Ahora puedes usar  git clone git@bitbucket-personal:username/other-pi-project.git

Host myserver
        HostName ssh.username.com
        Port 1111
        IdentityFile ~/.ssh/id_rsa_personal
        IdentitiesOnly yes
        User username
        IdentitiesOnly yes

Ya puedes usar SSH para ingresar a tu servidor usando ssh myserver. Ya no necesitarás ingresar un puerto (port) y nombre de usuario cada vez que quieras ingresar a tu servidor privado.

Administración de contraseñas

La pieza final del rompecabezas es el manejo o administración de contraseñas. Se puede volver una tarea tediosa tener que ingresar una contraseña cada vez que inicializas una conexión SSH. Para evitar esta situación, podemos usar software de administración de contraseñas que viene con macOS y varias distribuciones de Linux.

Para este tutorial usaremos Keychain Access, un programa de macOS. Empecemos por agregar tu clave a Keychain Access pasando la opción -K al comando ssh-add:

ssh-add -K ~/.ssh/id_rsa_whatever

Ahora podrás ver tu clave SSH en Keychain Access:

Pero si quitas las claves de  ssh-agent con  ssh-add -D o reinicias tu computadora, esta te volverá a solicitar la contraseña y usuario cuando trates de usar SSH. Resulta que hay un obstáculo más que sortear. Abre tu archivo  config usando nano ~/.ssh/config y agrega lo siguiente:  

Host *
  AddKeysToAgent yes
  UseKeychain yes

Con esto, cuando sea que uses ssh la computadora buscará automáticamente las claves en Keychain Access. Si encuentra una, ya no se te solicitará una contraseña cada que uses SSH. Las claves también se agregan automáticamente a ssh-agent cada vez que reinicias tu computadora.

¡Ahora que sabes lo básico de crear nuevas claves SSH y administrar varias, sal a ponerlo en práctica!

Traducido del artículo - The ultimate guide to ssh setting up ssh keys