[Tutorial] Autenticación automática en ssh usando una clave rsa
22 agosto 2009
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:
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:
Buscamos estas claves y en caso que estén comentadas las descomentamos:
También he deshabilitado el acceso ssh mediante password para que en el caso que no posean la key no accedan por password:
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:
Ahora en la otra maquina o maquinas creamos la clave RSA y la exportamos al servidor ssh:
Con esto ya esta listo, para acceder tan simple como:
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:
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:
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:
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:
Hacemos lo mismo en nuestra maquina con el archivo id_rsa.pub y 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^-^.
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^-^.
Publicar un comentario