¡Hola! Me parece que andas usando un bloqueador de anuncios =( ¿Nos desbloqueas? ¿Por qué?
F13

Funcion 13

Cómo iniciar sesión a través de SSH sin meter contraseña

¿Sueles conectarte a menudo a través de SSH a un servidor desde el mismo equipo, y estás harto de escribir la contraseña cada vez? ¿Necesitas ejecutar scripts de un servidor desde otro servidor?

Si alguna de las respuestas es “Sí” estás de enhorabuena. Gracias a la magia de los certificados SSH, las contraseñas son cosa del pasado.

Ya te estoy escuchando… ¿y no es eso poco seguro? Bueno… depende de si tu máquina está comprometida. Si está comprometida realmente dará un poco igual. En cualquier caso, siempre puedes revocar un certificado desde el servidor para bloquear al cliente.

Para lograr nuestro propósito, generaremos una clave de autentificación pública y privada en nuestro cliente (nuestra máquina) y copiaremos la clave pública al servidor. Las claves pueden tener una contraseña asociadas (permitiéndote iniciar sesión usando una contraseña diferente), pero podemos dejarla en blanco y conseguir un login automático. Esto no implica que estemos enviando datos sin encriptar a través de SSH. Tan solo implica que nuestros certificados están realizando la autentificación en vez de hacerla nosotros a mano escribiendo un usuario y una contraseña cada vez.

He aquí una sesión de ejemplo. Voy a usar textos como NOMBRESERVIDOR o USUARIOCLIENTE que, por regla general estarán cambiados:

USUARIOCLIENTE@HOSTCLIENTE:~$ ssh-keygen -t rsa Generating public/private rsa key pair  
Enter file in which to save the key (/home/USUARIOCLIENTE/.ssh/id_rsa): <pulsa enter>  
Created directory '/home/USUARIOCLIENTE/.ssh'.  
Enter passphrase (empty for no passphrase): <pulsa enter>  
Enter same passphrase again: <pulsa enter>  
Your identification has been saved in /home/a/.ssh/id_rsa.  
Your public key has been saved in /home/USUARIOCLIENTE/.ssh/id_rsa.pub.  

Enhorabuena, ahora ya tienes una clave pública y una privada. Aunque ahora mismo no hacen nada. Ahora tendremos que crear un directorio .ssh en nuestro servidor si es que no lo tiene ya creado. Aprovecharemos para copiar la clave SSH pública que acabamos de crear, a la lista de claves autorizadas en el servidor.

USUARIOCLIENTE@HOSTCLIENTE:~$ ssh USUARIOSERVIDOR@HOSTSERVIDOR mkdir -p ~/.ssh USUARIOSERVIDOR@HOSTSERVIDOR's password: CONTRASEÑASERVIDOR<pulsa enter>  
USUARIOCLIENTE@HOSTCLIENTE:~$ cat ~/.ssh/id_rsa.pub | ssh USUARIOSERVIDOR@HOSTSERVIDOR 'cat >> .ssh/authorized_keys' USUARIOSERVIDOR@HOSTSERVIDOR's password: CONTRASEÑASERVIDOR<pulsa enter>  

¡Una vez lo hayas hecho, serás capaz de hacer esto ssh HOSTSERVIDOR sin tener que escribir tu contraseña!

Extra

Como bien indica Joan en los comentarios, en ocasiones puede que no tengamos los permisos necesarios para poder leer las claves desde el servidor. Para solucionarlo es tan sencillo como hacer lo siguiente:

USUARIOCLIENTE@HOSTCLIENTE:~$ ssh USUARIOSERVIDOR@HOSTSERVIDOR USUARIOCLIENTE@HOSTCLIENTE:~$ chmod 700 .ssh USUARIOCLIENTE@HOSTCLIENTE:~$ chmod 644 .ssh/authorized_keys  

Si el artículo te pareció interesante, útil o incluso equivocado, por favor considera el dejar un comentario. ¡Lo apreciaré mucho!

Programador Front-end en First + Third y Potato. Trabajando con JavaScript y HTML5 desde el corazón de Sevilla.

Comentarios ¡Únete a la conversación!