Jun 25
SSH sin password
El objetivo es establecer una conexión SSH sin necesidad de teclear una password, evidentemente no a costa de la seguridad, claro está.
Esto puede resultar de utilidad para lo siguiente:
- Administramos varias máquinas y estamos hartos de teclear.
- Necesitamos lanzar comandos remotos de manera automática (CRON, script, …).
Esto lo podemos conseguir generando una clave RSA en la máquina cliente, y dejando la parte pública de dicha clave en el servidor, de modo que cuando el cliente intente conectarse al servidor, este se fíe del cliente.
Supongamos que tenemos la siguiente topología de máquinas y usuarios:

Topologia maquinas y usuarios para SSH sin password ©
PASOS A SEGUIR:
- Generar la clave RSA en el cliente, desde la cuenta del usuario1:
sss-keygen -t rsa
Esto generará lo siguiente (Pulsa la tecla Enter donde aparezca el texto [ENTER]):
Generating public/private rsa key pair.
Enter file in which to save the key (/home/usuario1/.ssh/id_rsa): [ENTER]
Enter passphrase (empty for no passphrase): [ENTER]
Enter same passphrase again: [ENTER]
Your identification has been saved in /home/usuario1/.ssh/id_rsa.
Your public key has been saved in /home/usuario1/.ssh/id_rsa.pub.
The key fingerprint is:
67:da:cf:b6:31:8f:3a:a8:aa:fb:96:d6:03:96:fd:82 usuario1@cliente
Tal y como el log del comando indica esto nos ha generado 2 ficheros: ~/.ssh/id_rsa clave privada, ~/.ssh/id_rsa.pub clave pública. - Copiaremos la clave pública al servidor:
scp ~/.ssh/id_rsa.pub cliente2@servidor:
Esto mostrará lo siguiente (introducir la password de cliente2 en [PASSWORD]):
cliente2@servidor's password: [PASSWORD]
id_rsa.pub 100% 402 0.4KB/s 00:00 - Ahora añadiremos la clave pública del cliente en la lista de claves autorizadas del servidor, para lo cual desde la sesión de usuario2 en el servidor, teclearemos lo siguiente:
if [ ! -d ~/.ssh ]; then mkdir ~/.ssh; fi
chmod 700 ~/.ssh
if [ ! -e ~/.ssh/authorized_keys ]; then touch ~/.ssh/authorized_keys; fi
chmod 600 ~/.ssh/authorized_keys
echo ~/id_rsa.pub >> ~/.ssh/authorized_keys
Con estos pasos, ya podremos hacer un SSH desde el cliente al servidor sin que se nos pregunte por una password.
RESOLUCIÓN DE PROBLEMAS:
Lo mejor para solucionar problemas es usar el log, para ello tenemos dos vías:
- En el cliente, lanzar el cliente de SSH con toda la traza posible:
ssh -v -v -v -v cliente2@servidor - En el servidor, ver la traza del servidor de SSH:
tail /var/log/auth.log
Algunos de los problemas que pueden darse son:
- No has generado bien la clave en el cliente (repasa el paso 1).
- Los permisos de la carpeta ~/.ssh o del fichero ~/.ssh/authorized_keys en el servidor no son correctos (repasa el paso 3).
- La versión de SSH del cliente no corresponde con la del servidor, lo cual puede causar un fallo, para detectarlo y solucionarlo ver las trazas como se ha indicado previamente, y lo normal sería actualizar ambas máquinas.
- El cliente es más viejo que el servidor, y ha generado una clave que el servidor considera vulnerable. Este error es muy difícil de de detectar, dado que hay que ver en profundidad las trazas del servidor, pero se puede prevenir fácilmente ejecutando el comando en el servidor que nos dirá si tenemos alguna clave en la máquina vulnerable:
ssh-vulnkey -a
Si la clave del cliente fuera marcada como vulnerable, tenemos dos opciones:- Actualizar el cliente y repetir el proceso sobreescribiendo las claves.
- Indicar en el servidor que acepte las claves vulnerables, esto lo hacemos editando el fichero de configuración del servidor de SSH del servidor añadiendo la línea (si es que no existe previamente):
PermitBlacklistedKeys yes
Si tenéis algún problema adicional, no dudéis en enviar un comentario, e intentaré ayudaros. También si alguien ha tenido algún problema con esto, y ha encontrado solución, se agradecería un comentario indicando cuál fue el problema y su solución, de este modo ayudaremos a gente que pudiera tener dicho problema…
EHT Related v0.2.5 by Emilio González Montaña


Spanish
English

Todavía sin comentarios.