-o password_stdin
não parece estar funcionando em todos os sistemas, por exemplo, freeBSD. etc.
Você também pode usar o expect
Intérprete, ele deve funcionar com sshfs e deve fazer o truque.
Outra solução seria sshpass
, por exemplo, digamos que você esteja fazendo o backup do diretório / var / www
Fazendo backup:
name=$(date '+%y-%m-%d')
mkdir /backup/$name && tar -czvf /backup/$name/"$name.tar.gz" /var/www
fazendo upload de arquivo de backup para o servidor de backup
sshpass -p "your_password" scp -r backup_user@target_ip:/home/ /backup/$name
Por isso vai fazer upload de diretório com o backup de hoje
Mas ainda assim, como foi dito mais alto, melhor (seguro e simples) caminho seria usar ssh par de chaves
O único inconveniente seria que você tem que passar pelo processo de geração de chaves, uma vez em cada servidor é necessário emparelhar, mas é melhor do que manter uma senha em formato de texto sem formatação em todos os servidores que você deseja fazer backup :),
Gerando um par de chaves da maneira correta
No servidor local
ssh-keygen -t rsa
No servidor remoto
ssh root@remote_servers_ip "mkdir -p .ssh"
Upload de chaves públicas geradas para o servidor remoto
cat ~/.ssh/id_rsa.pub | ssh root@remote_servers_ip "cat >> ~/.ssh/authorized_keys"
Definir permissões no servidor remoto
ssh root@remote_servers_ip "chmod 700 ~/.ssh; chmod 640 ~/.ssh/authorized_keys"
Conecte-se
ssh root@remote_servers_ip
Ativando o Protocolo SSH v2
descomente o "Protocolo 2" em / etc / ssh / sshd_config
habilitando a autorização de chave pública no sshd
descomente "PubkeyAuthentication yes" em / etc / ssh / sshd_config
Se StrictModes estiver definido como yes em / etc / ssh / sshd_config,
restorecon -Rv ~/.ssh