La guía definitiva para SSH: configuración de claves SSH

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/.sshdirectorio 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-addalmacenar 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/configy ábralo para editarlo:

nano ~/.ssh/config

Administrar la clave SSH con nombre personalizado

Lo primero que vamos a resolver usando este configarchivo 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 configarchivo:

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

A continuación, asegúrese de que ~/.ssh/id_rsano esté dentro ssh-agentabriendo otra terminal y ejecutando el siguiente comando:

ssh-add -D

Este comando eliminará todas las claves de la ssh-agentsesión actualmente activa .

Ahora, si intenta cerrar un repositorio de GitHub, su configarchivo 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 -Kopción al ssh-addcomando:

ssh-add -K ~/.ssh/id_rsa_whatever

Ahora puede ver su clave SSH en Keychain Access:

Acceso al llavero

Pero si se quita las llaves ssh-agentcon ssh-add -Do 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 configarchivo SSH ejecutando nano ~/.ssh/configy agregue lo siguiente:

Host * AddKeysToAgent yes UseKeychain yes

Con eso, siempre que sshlo 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-agentcada 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 sshal contenido de su corazón!