2007-10-30

SSH sin contraseñas

Bueno por mi trabjo tuve que aprender esto, pero lo que mas me gusto fue que lo saque sin ayuda de san google sino con el trabajo mancomunado de mi compañero de trabajo y el mio, teniamos que apagar 37 maquinas con sistemas UNIX, por lo que se podran imaginar lo repetirivo del asunto y lo tedioso del mismo, así que para solucionar esto decidimos hacer un script que por medio de ssh apagara una a una las maquinas, epro necesitabas que no nos solicitara la contraseñas de las maquinas, por lo cual esto e hace así:

En la maquina que vas a enviar el script o desde la que vos trabajas y accesas a todas las demás, en esta ejecutas el siguiente comando:

[root@localhost:~]#ssh-keygen -t dsa -b 1024

El dsa te permite trabajar con el protocolo ssh v2 pero si trabajas con el v1 escribe rsa, el -b 1024 crea una llave con encriptacion a 1024bits lo suficientemente seggura para que no tengas problemas, esto te ba agenerar un archivo llamado dsa-key.pub, el cual quedara en la ubicacion /etc/ssh/, desde la cual la enviaras a la maquina a la que quieres controlar sin que te vuelva a pedir contraseña, esto lo puedes hacer con scp y usar por ultimas vez la contraseña así:

[root@localhost:~]#scp /etc/ssh/dsa-key.pub user@ip_address:/tmp

cambias el user por el usuario e ip_address por la dirección IP del equipo done vas a enviar el archivo, posterior a eso te trasladas a ese equipo, puede ser con ssh y realizas los siguientes cambios

[root@localhost:~]#ssh -l root ip_address

aca con el archivo que nos enviamos lo colocamos en donde lo necesitamos y con el nombre con el que lo necesitamos de la siguiente forma:

[root@remotehost:~]#mv /tmp/dsa-key.pub /home/$user/.ssh/authorized_keys

ya con esto estas sobre la otra maquina, aca vas a modificar el archivo de configuracion de ssh, así

[root@remotehost:~]#vi /etc/ssh/sshd.conf

te desplazas hasta la última línea y agregas lo siguiente

RSSAuthentication yes
PubkeyAuthentication yes
AuthorizedKeyFile %h/.ssh/authorized_keys

Listo ya tendras control sobre esa maquina, eso tienes que tener mucho cuidado de no perder la llave publica, por que esto es un backdoor super seguro, pero backdoor al fin y al cabo. Para probar la configuración ingresas a tu maquina y le envías una orden así

[root@localhost:~]#ssh -l root ip_address orden

ahí ya no te debe pedir la contraseña y ejecutar la orden sin problemas, imaginate la utilidad de esto en un cron para hacer copias sobre servidores remotos de los logs y demás.