-o password_stdin
no parece estar funcionando en todos los sistemas, por ejemplo, freeBSD. etc.
También puede usar el expect
intérprete, debería funcionar con sshfs y debería funcionar.
Otra solución sería sshpass
, por ejemplo, digamos que está haciendo una copia de seguridad del directorio / var / www
Respaldando:
name=$(date '+%y-%m-%d')
mkdir /backup/$name && tar -czvf /backup/$name/"$name.tar.gz" /var/www
cargar el archivo de respaldo al servidor de respaldo
sshpass -p "your_password" scp -r backup_user@target_ip:/home/ /backup/$name
Por lo tanto, cargará el directorio con la copia de seguridad de hoy.
Sin embargo, como se dijo más arriba, la mejor manera (segura y simple) sería usar el par de claves ssh.
El único inconveniente sería que debe pasar por el proceso de generación de claves una vez en cada servidor necesita emparejar, pero es mejor que mantener una contraseña en formato de texto sin formato en todos los servidores de los que desea hacer una copia de seguridad :),
generando un par de claves de la manera correcta
En servidor local
ssh-keygen -t rsa
En servidor remoto
ssh root@remote_servers_ip "mkdir -p .ssh"
Carga de claves públicas generadas al servidor remoto
cat ~/.ssh/id_rsa.pub | ssh root@remote_servers_ip "cat >> ~/.ssh/authorized_keys"
Establecer permisos en el servidor remoto
ssh root@remote_servers_ip "chmod 700 ~/.ssh; chmod 640 ~/.ssh/authorized_keys"
Iniciar sesión
ssh root@remote_servers_ip
Habilitar el protocolo SSH v2
descomentar "Protocolo 2" en / etc / ssh / sshd_config
habilitar la autorización de clave pública en sshd
descomente "PubkeyAuthentication yes" en / etc / ssh / sshd_config
Si StrictModes se establece en yes en / etc / ssh / sshd_config, entonces
restorecon -Rv ~/.ssh