[Tutorial] Autenticación automática en ssh usando una clave rsa
22 agosto 2009
0
comentarios
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^-^.