[Tutorial] Autenticación automática en ssh usando una clave rsa

22 agosto 2009 Publicado por cLimbo
Yo normalmente uso mucho ssh para administrar mi maquina en red. Cada vez que entro al servidor ssh por defecto tiene configurada la autentificación por password para acceder a la maquina pero hoy he cambiado de método, ahora uso identificación basada en RSA, esto es mas seguro y mas cómodo, seguro por que la clave aunque la conozcan no pueden entrar y es mas cómodo por que no tenemos que meter la clave, con tan solo:

ssh usuario@host

vale :)

Para hacer este proceso lo primero que debemos hacer es permitir la autentificación RSAAuthentication y configurar la AuthorizedKeysFile donde están las claves de paso para las maquinas que forman el anillo de confianza en la red, para ello editamos el archivo /etc/ssh/sshd_config en la maquina donde esta el servidor ssh al cual pretendemos entrar:

sudo nano /etc/ssh/sshd_config

Buscamos estas claves y en caso que estén comentadas las descomentamos:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys

También he deshabilitado el acceso ssh mediante password para que en el caso que no posean la key no accedan por password:
PasswordAuthentication no

Tener en cuenta que RSAAuthentication es para SSH1 y PubkeyAuthentication para SSH2, de todas maneras no pasa nada por descomentar ambas, salvamos el fichero y reiniciamos el demonio:

sudo /etc/init.d/ssh restart


Ahora en la otra maquina o maquinas creamos la clave RSA y la exportamos al servidor ssh:

ssh-keygen -t rsa
cat .ssh/id_rsa.pub | ssh usuario@host "cat - >> .ssh/authorized_keys"


Con esto ya esta listo, para acceder tan simple como:

ssh usuario@host


Nos pedirá una clave la 1 vez en la sesión, esta se almacenara y no nos la pedirá mas veces hasta que no cerremos sesión. Si estamos por consola sin X tenemos que ejecutar estos 2 comandos:

ssh-agent /bin/bash
ssh-add


Nos pedirá igualmente la clave de paso y ya no nos la pedirá mas veces hasta que cerremos la sesión. Podemos guardarlo en nuestro ~/.bashrc para ahorrarnos el proceso:

echo "ssh-agent /bin/bash" >> ~/.bashrc
echo "ssh-add" >> ~/.bashrc


Des esta manera todos los procesos hijos que se inicien a partir de ahora se almacenaran. De igual manera podemos agilizarlo si usamos un entorno gráfico:

echo "ssh-agent /usr/X11R6/bin/X" >> ~/.xinitrc
echo "ssh-add" >> ~/.bashrc


Una cosa importante es cambiar los permisos del archivo authorized_keys del servidor ssh para que sea solo visible por el usuario y ningún usuario no autorizado pueda leer la clave:

chmod 600 .ssh/authorized_keys


Hacemos lo mismo en nuestra maquina con el archivo id_rsa.pub y id_rsa:

chmod 600 .ssh/id_rsa*


Esto es uno de los métodos mas seguros y nos ahorramos problemas ya que como sabéis la gente siempre intenta entrar por fuerza bruta a servidores ssh por la red y como tenemos RSA no podrán acceder a menos que posean el archivo id_rsa.pub en su sistema cosa poco menos que probable a no ser que físicamente acceda al pc.

Un saludo

Artículo cedido por un conocido; chakal^-^.