Bienvenido a nuestra guía definitiva para configurar claves SSH (Secure Shell). Este tutorial lo guiará a través de los conceptos básicos de la creación de claves SSH y también cómo administrar múltiples claves y pares de claves.
Crear un nuevo par de claves SSH
Abra una terminal y ejecute el siguiente comando:
ssh-keygen
Verá el siguiente texto:
Generating public/private rsa key pair. Enter file in which to save the key (/home/username/.ssh/id_rsa):
Presione enter para guardar sus claves en el /home/username/.ssh
directorio predeterminado .
Luego se le pedirá que ingrese una contraseña:
Enter passphrase (empty for no passphrase):
Se recomienda ingresar una contraseña aquí para una capa adicional de seguridad. Al establecer una contraseña, puede evitar el acceso no autorizado a sus servidores y cuentas si alguien alguna vez obtiene su clave SSH privada o su máquina.
Después de ingresar y confirmar su contraseña, verá lo siguiente:
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 tiene un par de claves SSH públicas y privadas que puede usar para acceder a servidores remotos y manejar la autenticación para programas de línea de comandos como Git.
Gestionar varias claves SSH
Aunque se considera una buena práctica tener solo un par de claves pública-privada por dispositivo, a veces es necesario usar varias claves o tiene nombres de clave poco ortodoxos. Por ejemplo, podría estar usando un par de claves SSH para trabajar en los proyectos internos de su empresa, pero podría estar usando una clave diferente para acceder a los servidores de un cliente. Además de eso, es posible que esté utilizando un par de claves diferente para acceder a su propio servidor privado.
La administración de claves SSH puede resultar engorrosa tan pronto como necesite utilizar una segunda clave. Tradicionalmente, solía ssh-add
almacenar sus claves en ssh-agent
, escribiendo la contraseña para cada clave. El problema es que necesitaría hacer esto cada vez que reinicie su computadora, lo que puede volverse tedioso rápidamente.
Una mejor solución es automatizar la adición de claves, almacenar contraseñas y especificar qué clave usar al acceder a ciertos servidores.
SSH config
Ingrese SSH config
, que es un archivo de configuración por usuario para la comunicación SSH. Cree un nuevo archivo: ~/.ssh/config
y ábralo para editarlo:
nano ~/.ssh/config
Administrar la clave SSH con nombre personalizado
Lo primero que vamos a resolver usando este config
archivo es evitar tener que agregar claves SSH con nombre personalizado usando ssh-add
. Suponiendo que su clave SSH privada tiene un nombre ~/.ssh/id_rsa
, agregue lo siguiente al config
archivo:
Host github.com HostName github.com User git IdentityFile ~/.ssh/id_rsa IdentitiesOnly yes
A continuación, asegúrese de que ~/.ssh/id_rsa
no esté dentro ssh-agent
abriendo otra terminal y ejecutando el siguiente comando:
ssh-add -D
Este comando eliminará todas las claves de la ssh-agent
sesión actualmente activa .
Ahora, si intenta cerrar un repositorio de GitHub, su config
archivo usará la clave en ~/.ssh/ida_rsa
.
A continuación, se muestran otros ejemplos de configuración útiles:
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
Ahora puede SSH en su servidor usando ssh myserver
. Ya no es necesario que ingrese un puerto y un nombre de usuario cada vez que ingrese a su servidor privado por SSH.
Gestión de contraseñas
La última pieza del rompecabezas es administrar las contraseñas. Puede resultar muy tedioso ingresar una contraseña cada vez que inicializa una conexión SSH. Para evitar esto, podemos usar el software de administración de contraseñas que viene con macOS y varias distribuciones de Linux.
Para este tutorial usaremos el programa Keychain Access de macOS. Comience agregando su clave al acceso al llavero pasando la -K
opción al ssh-add
comando:
ssh-add -K ~/.ssh/id_rsa_whatever
Ahora puede ver su clave SSH en Keychain Access:

Pero si se quita las llaves ssh-agent
con ssh-add -D
o reiniciar el equipo, se le pedirá la contraseña de nuevo cuando intenta utilizar SSH. Resulta que hay un aro más por el que saltar. Abra su config
archivo SSH ejecutando nano ~/.ssh/config
y agregue lo siguiente:
Host * AddKeysToAgent yes UseKeychain yes
Con eso, siempre que ssh
lo ejecutes buscará claves en Keychain Access. Si encuentra una, ya no se le pedirá una contraseña. Las claves también se agregarán automáticamente ssh-agent
cada vez que reinicie su máquina.
Ahora que conoce los conceptos básicos de la creación de nuevas claves SSH y la administración de varias claves, ¡salga y ssh
al contenido de su corazón!