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