Necesito hacer copias de seguridad periódicas de un directorio en un servidor remoto que es una máquina virtual alojada por una organización de investigación. Exigen que el acceso a las máquinas virtuales se realice a través de claves ssh, lo cual está bien, excepto que no puedo entender cómo apuntar rsync a la clave ssh para este servidor.
Rsync no tiene ningún problema si el archivo de clave es ~/.ssh/id_rsa
, pero cuando es algo más, obtengo Permission denied (publickey)
.
Con ssh puedo especificar el archivo de identidad -i
, pero rsync parece no tener esa opción.
También he intentado mover temporalmente la clave en la máquina local ~/.ssh/id_rsa
, pero eso tampoco funciona.
tl; dr
¿Se puede especificar un archivo de identidad con rsync?
sudo rsync
, que por alguna razón no usa las propias teclas ssh.rsync -aAP "sudo -u user ssh" user@server:dir local_dir
cuando sincronizo desde scripts cron que se ejecutan como rootRespuestas:
Puede especificar el comando ssh exacto a través de la opción '-e':
Muchos usuarios de ssh no están familiarizados con su archivo ~ / .ssh / config. Puede especificar la configuración predeterminada por host a través del archivo de configuración.
A la larga, es mejor aprender el archivo ~ / .ssh / config.
fuente
~/.ssh/config
archivo: ¡abriste un nuevo universo para mí!Esto se puede hacer con la configuración de usuario SSH, consulte: http://www.cyberciti.biz/faq/create-ssh-config-file-on-linux-unix/ básicamente edite ~ / .ssh / config:
Esto debería funcionar para cualquier programa que use SSH, rsync,
fuente
Para mí fue suficiente iniciar el ssh-agent de la siguiente manera:
Vea también una respuesta más larga aquí https://stackoverflow.com/questions/17846529/could-not-open-a-connection-to-your-authentication-agent
fuente
FYI:
1) La clave pública siempre está en el directorio de inicio del usuario que inicia sesión en el servidor remoto, es decir, si inicia sesión como "copia de seguridad", se encuentra en /home/backup/.ssh/authorized_keys. La identificación de usuario cuando inicia sesión define la clave pública utilizada en el destino.
Puede elegir la ID de usuario cuando realiza la conexión de dos maneras diferentes:
Por otro lado, en su extremo, la clave privada está de manera similar en la referencia del usuario a menos que la anule como se describe en la respuesta de Dan.
2) Para fines de respaldo, puede ser conveniente crear una clave restringida que se limite a ejecutar solo un comando como "rsync". Hay una buena descripción acerca de eso relacionado con la copia de seguridad "rsnapshot" que le permite hacer una copia de seguridad remota de todo el servidor utilizando una cuenta de usuario no privilegiada y "sudo":
"rsnapshot" howto
Rsnapshot puede realizar fácilmente copias de seguridad de un grupo de servidores remotos o locales, lo que lo convierte en un práctico servidor de copias de seguridad centralizado y programado.
fuente