SSH es un protocolo de inicio de sesión remota que ha sido la base de la seguridad de GNU/Linux (BSD y los UNIX en general) durante décadas, una de las características más importantes consiste en evitar la necesidad de usar usuario-contraseña para la autenticación, sino un sistema de llaves SSH pública-privada basado en el algoritmo RSA, con esto, mi equipo (y solo mi equipo) tiene acceso “sin contraseña” al host, pues se identifica usando una clave RSA.
Ahora bien, en un mundo cada vez más ávido de seguridad, casi todo lo que tenga que ver con datos (y especificamente con acceso a servidores) requiere llaves SSH, por ejemplo, github las requiere, bitbucket, Amazon otorga llaves para acceder a cada equipo, etc.
¿Cómo hacer para gestionar diferentes llaves SSH en un mismo equipo?
Cuando tenemos múltiples llaves SSH instaladas, es un fastidio tener que indicarlas cada vez en el comando SSH:
ssh -i ~/.ssh/xxx_id_rsa user@host
Deseo que podamos acceder claramente a nuestro equipo sin tener que indicar la llave RSA.
He acá el truco …
Debemos configurar SSH para que acepte una configuración especifica por cada host y/o conexión que requerirá su propia llave SSH.
Para dar un ejemplo, tengo 2 llaves privadas, una que me proporciona un servidor de Amazon AWS y otra, que generé con ssh-keygen para conectarme a github, dichas llaves son diferentes.
El primer paso es crear un archivo “config” dentro de nuestro directorio “.ssh” (ese directorio es por usuario).
vim ~/.ssh/config
Allí agregamos:
Host github.com HostName github.com PreferredAuthentications publickey User phenobarbital IdentityFile ~/.ssh/id_rsa.github
Y paso a explicar:
Host: nombre “amigable” con el cual identificaremos el host en el comando ssh, puede ser cualquier cosa que nos ayude a memorizar su nombre (no tiene que ser ni el hostname ni la IP real)
Hostname: Esta si es la IP o nombre de host real del equipo al que me voy a conectar.
User: El único usuario con el que iniciaré sesión en ese host, en este caso, mi ID de github.
IdentityFile: Es la llave (que generé con SSH-KEYGEN y subí a github) con la que hago mis commits a github.
Guardo, aplico los permisos al archivo config y a la llave privada:
chmod 0600 /home/armandof/.ssh/id_rsa.github
chmod 0600 ~/.ssh/config
Y seguido de una línea nueva, agrego la siguiente definición de host:
vim ~/.ssh/config
Host server HostName armandof.cu.cc User armandof PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa.blog
Aplico los mismos permisos 0600 al archivo id_rsa.blog y listo!
Intenten hacer un:
ssh -l armandof server
Y entrará sin pedir clave usando la llave privada que le hemos configurado.
Host me.github.com HostName github.com PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa.github IdentityFile ~/.ssh/id_rsa IdentityFile ~/.ssh/id_rsa.2
PreferredAuthentications publickey,password
Host example.com HostName server.example.com User armandof Port 50222 PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa.2
/etc/ssh/ssh_config
Happy Hacking! y ¡Ya sabes como!
Uno de los grandes retos al que nos podemos enfrentar cuando una aplicación crece, es…
Percona Monitoring and Management (PMM) es una herramienta de código abierto para la supervisión y…
Qué es lo que deseo hacer en este capítulo? Básicamente un sonoff, quiero encender/apagar las…
Hace algunos meses estoy escuchando hablar del proyecto Home Assistant (HA). En palabras literales del…
Desde hace varios meses vengo con la idea de automatizar la casa donde vivo. Poco…
El artículo describe el uso para un caso particular de OpenWRT y la creación de…