Además de todas las respuestas anteriores, aquí hay una que se basa en claves SSH con restricciones sobre lo que se puede hacer al iniciar sesión con esa clave.
En el servidor A
En este caso, es menos importante si crea un usuario separado o usa uno de sus nombres de usuario existentes, aunque si fuera yo, crearía un usuario separado. Usaré el nombre bkpuser
de usuario para ambos servidores en mis ejemplos a continuación.
Cuando inicie sesión bkpuser
, cree una clave SSH sin contraseña.
En el servidor B
Habilitar PubkeyAuthentication
en sshd_config
.
Crea el usuario bkpuser
. Establezca una contraseña muy complicada o desactive el inicio de sesión de contraseña para ese usuario (exactamente cómo lo haga dependerá de qué unix y distribución esté ejecutando). El punto es que el usuario solo debe iniciar sesión con una clave SSH. Asegúrese de que bkpuser
tenga acceso de lectura a todos los directorios y archivos de los que desea hacer una copia de seguridad.
Copie la parte pública de la clave creada en A ~bkpuser/.ssh/authorized_keys
en B. Edite para ejecutar automáticamente un comando en la conexión. Ese comando no debe ser un puntero a un script de shell; en su lugar, inserte el script de shell en la clave directamente. También incluya una limitación para que la clave solo se pueda usar desde el servidor A y ningún otro servidor. En el siguiente ejemplo, le doy al servidor A la dirección IP 10.1.2.3
y supongo que todos los archivos de los que quiero hacer una copia de seguridad están debajo /data
.
from="10.1.2.3",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="cd /data;/usr/bin/tar -cf - *; /usr/bin/logger -t BACKUP -p daemon.info \"INFO: Backup-files on $HOST fetched from ${SSH_CLIENT%% *} by $USER\";" ssh-dss AA.....
En el servidor A
Si está utilizando una de las pestañas cron que admite @reboot
entradas, agregue dicha entrada a bkpuser
s crontab con el comando ssh -i ~bkpuser/.ssh/id_dsa serverB > backup.tar.gz
. Si no lo permite, configúrelo en cualquier momento que desee; si fuera mi información, probablemente lo haría a diario.