SSH sin password

A veces existe la imperiosa necesidad de configurar el acceso SSH sin clave por diversos motivos. Supongamos que cada poco tiempo tenemos que transferir archivos de un ordenador a otro de forma segura (por ssh o scp se me ocurre). Es un lío andar poniendo la contraseña cada vez que lo necesitemos.

Podemos solucionar nuestro problema haciendo que un equipo confíe en el otro. Mirándolo de otra forma podemos pensar que es inseguro, pero en ciertas ocasiones merece la pena tener esta configuración, más aún si los 2 equipos son propiedad de la misma persona :) Un caso práctico al que se puede aplicar todo esto es en una copia de seguridad de una máquina a otra a través de rsync o scp, así que allá vamos:

Para empezar tenemos que generar una clave dsa pública local que posteriormente exportaremos al ordenador remoto:
luser@local# ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/luser/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /luser/.ssh/id_dsa.
Your public key has been saved in /luser/.ssh/id_dsa.pub.
The key fingerprint is:
aa:rr:aa:ss:ff:rr:ee:nn:aa:dd:aa:ll:aa:rr:gg:aa 
luser@local#
La passphrase la dejamos en blanco, pues buscamos eso, no interactuar en el ssh. Una vez generada esa clave, debemos pasarla de forma segura (es muy importante no pasarla por ftp, mail o similares) a la máquina remota. Podemos hacerlo de la siguiente manera:
luser@local# scp .ssh/id_dsa.pub luser@remote:/home/luser/.ssh/authorized_keys2
luser@local#
O más sencillo todavía:
$ ssh-copy-id -i ~/.ssh/id_dsa.pub user@remote.machine.com
Una vez pasada la clave a la máquina remota estamos en condiciones de hacer un ssh sin contraseña alguna:
luser@local# ssh remote ls
.bash_history
.bashrc
pipiculas
tonteridas
...
luser@local#
Este mini-post está inspirado en el de Natxo Morell, quería tener la anotación en mi bitácora para poder consultar un utilísimo truck & tip cuando no lo recuerde, mi memoria a veces falla. Gracias Natxo.

About the author

Óscar
has doubledaddy super powers, father of Hugo and Nico, husband of Marta, *nix user, Djangonaut and open source passionate.
  • Y no sería más sencillo permitir el acceso sin contraseña y limitar la ip ?? o en tal caso hacer las dos cosas. Besitos
  • Muy bueno el post! :D
  • Porque las claves RSA (o DSA en el ejemplo de r0sk) son más fáciles de guardar que una IP ;) Pero bueno... si un atacante se puede molestar tanto en saltarse un control por IP, no veo porqué no puede comprometer tus claves RSA :P
  • Esta técnica es muy poco recomendada, así fue como entraron en los servidores de Debian. Lo más recomendado es poner una passphrase (bien complicada) y usar ssh-agent y ssh-add para que el ssh recuerde la passphrase en una sesión. De esta manera aprovechamos lo mejor de los 2 mundos, por un lado para un cracker que entre a nuestra PC no será tan sencillo meterse en todos los servidores en los que tenemos acceso via ssh y por otro seguimos teniendo la comodidad de no tener que poner la passphrase cada 5 minutos (la ponemos una sola vez al iniciar la sesion). Espero que sirva.
  • Para varios ordenadores de confianza, con agregar las claves a authorized_keys2 llegaría: cat authorized_keys_nuevo >> authorized_keys2
  • y no es mas facil pernitir el accseso sin contraceña
  • luca, podrias explicarnos mejor como hacer lo que nos indicas entu comentariopor favor?
  • Hola, Os dejo un tutorial sobre el tema, que quizás os resulte de interés: http://ociotec.com/index.php/2008/06/25/ssh-sin-password/
  • Muchas gracias por esta valiosa información. He realizado todos los pasos al pie de la letra y me ha funcionado perfectamente a la primera. Gracias!
  • People all over the world receive the credit loans in various banks, because that's fast and easy.
blog comments powered by Disqus