Sincronización sin contraseña en Linux en tres pasos

Hace ya bastante tiempo que realizo copias de seguridad en un NAS. Copias de seguridad del trabajo que realizo para la web, así como las aplicaciones que desarrollo, al igual que mi información personal . He probado diferentes métodos para sincronizar toda esta información entre mi ordenador y el NAS. Y finalmente siempre termino por recurrir a rsync. Aunque he probado soluciones tan válidas como Syncthing que todavía sigue en paralelo para el móvil, hasta que lo termine por quitar. Sin embargo me molesta introducir la contraseña para realizar la sincronización vía rsync. Sabía que existía una solución sencilla para esto, pero hasta el momento lo he ido dejando de lado, hasta que me he cansado. La solución, sincronización sin contraseña.

Optar por un NAS para mantener toda tu información a salvo es una solución, muy pero que muy recomendable. Ahora, tenemos opciones como las proporcionadas por Synology, que te puedo asegurar que simplifican enormemente las cosas.

Las posibilidades que ofrece un dispositivo de estos son brutales, y no me quedo corto con el adjetivo, ni mucho menos. Ademas de guardarte toda la información de forma segura, puesto que puedes montar un sistema RAID, puedes desde instalar un servidor de páginas web, hasta una wikipedia, y todo lo que se te pueda imaginar. En mi caso, además del tema de copias de seguridad, lo utilizo para crear y probar páginas web, sin necesidad de montar uno en mi equipo. Además te permite conectarte desde el exterior…

Sincronización sin contraseña. Logo.

Sincronización sin contraseña

Esta solución no es exclusiva para rsync, sino que se emplea en cualquier conexión vía ssh. Al final, es tan sencillo como generar un par de claves de identificación, y tendremos resuelta la sincronización sin contraseñas.

Las claves de identificación corresponden al cliente, no al servidor. De esta forma una vez generada la clave de identificación, copiaremos la parte pública en el servidor. Cuando nos conectemos con nuestro cliente se realizará el proceso de identificación, y si todo funciona como debe accederemos sin mas problemas.

Cómo hacemos para generar nuestras claves de identificación

Evidentemente, cuento con que no tienes claves de identificación, en otro caso, simplemente salta este punto y vamos al siguiente.

Para generar las claves ejecutaremos la siguiente orden. No es necesario utilizar frase de contraseña, aunque yo normalmente siempre la introduzco.

ssh-keygen -t rsa

Tienes que introducir el nombre del archivo donde quieres que se cree, normalmente ~/.ssh/id_rsa, y el te indicará donde guarda la clave pública (tiene extensión .pub). Por ejemplo, yo lo he creado en example y la clava pública está en example.pub, tal y como puedes ver en la siguiente imagen,

Sincronización sin contraseña. Terminal 1.

Crear el directorio .ssh en destino para la sincronización sin contraseña

Una vez cumplido este requisito previo tenemos que crear el directorio ~/.ssh, en el servidor, o equipo de destino. Esto es tan sencillo como ejecutar el siguiente comando en un terminal de tu equipo,

ssh lorenzo@192.168.1.181 mkdir -p .ss
h

Aquí tienes que sustituir lorenzo por tu nombre de usuario, y 192.168.1.181 por la IP de tu equipo destino, ya sea un NAS o un móvil Android. En esta ocasión, evidentemente, te pedirá la contraseña (ya queda poco).

Copiando nuestra clave pública al equipo destino

El último paso para realizar la sincronización sin contraseña es muy sencillo. Solo tienes que ejecutar la siguiente orden en un emulador de terminal desde tu ordenador

cat ~/.ssh/id_rsa.pub | ssh lorenzo@192.168.1.181 'cat >> .ssh/authorized_keys'

o mejor todavía, utilizando la recomendación de Xavi:

ssh-copy-id -i ~/.ssh/id_rsa.pub lorenzo@192.168.1.18

Igual que en el caso anterior, tienes que sustituir lorenzo por tu nombre de usuario, y 192.168.1.181 por la IP de tu equipo.

Si todo va bien, esta será la última vez que tengas que introducir la contraseña. A partir de ahora no será necesario, y podrás realizar la sincronización sin contraseña.

Sincronización sin contraseña

Ahora para hacer una copia de seguridad del directorio personal de tu equipo en tu NAS, solo tienes que ejecutar la siguiente orden,

rsync --delete --progress --omit-dir-times --no-perms --stats -avz /home/lorenzo/Personal/ lorenzo@192.168.1.181:/volume1/homes/lorenzo/Personal

Donde como es lógico debes sustituir el directorio de origen y de destino por los tuyos, así como el nombre de usuario y la dirección IP.


Más información,

8 comentarios en “Sincronización sin contraseña en Linux en tres pasos

  1. PI
    pillabichos hace 8 años

    ¡A favoritos vas!

  2. GU
    guadalem hace 8 años

    Buenas tardes LORENZO. Gracias por la aportación. Para mi nivel puede ser algo complicada la solución de la terminal. ¿No sería posible alguna herramienta o programa con interface gráfica como el sencillo y maravilloso PATHSYNC de Windows?. Siempre gracias.

    1. EL
      El atareao hace 8 años

      Hola guadalem,
      Te recomiendo FreeFileSync que es multiplataforma, es sencillo y te da muchas mas opciones que pathsync (lo que lo hace algo mas complicado)…
      Saludos

    1. EL
      El atareao hace 8 años

      Hola Xavi,
      He actualizado el artículo con tu sugerencia.
      Muchas gracias

  3. DO
    Domi hace 7 años

    Muy útil el apunte, muchas gracias. En mi caso necesité también modificar /etc/ssh/sshd_config en el NAS para descomentar estas 3 líneas:

    RSAAuthentication yes
    PubkeyAuthentication yes
    AuthorizedKeysFile .ssh/authorized_keys

    y establecer estos permisos (también en el NAS):

    chmod 700 ./.ssh
    chmod 600 ./.ssh/authorized_keys

    Fuente: http://karlcode.owtelse.com/blog/2015/06/27/passwordless-ssh-on-synology/

  4. BA
    Baphomet hace 4 meses

    Si vuelve a pedirte contraseña la terminal remota, solo tienes que borrar el fichero /home/USUARIO/.ssh/know_hosts y volver a realizar la operación de copia: ssh-copy-id usuario_remoto@ip_remota

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *