Rsync sem senha sobre SSH sem autenticação de chave

Rsync sem senha sobre SSH sem autenticação de chave

Quero configurar um trabalho RSync que se conecte por meio de SSH.

Eu tenho meu computador ( backup@myhost ) e o host remoto ( test@remhost ) e preciso fazer backup da pasta ~/something com todo o seu conteúdo. O teste do usuário ssh tem apenas acesso de LEITURA a todos os arquivos e pastas na pasta ~/. Quero usar o rsync para copiar a pasta test@remhost:~/something para a pasta backup@myhost:~/bak.

Para isso utilizo o seguinte comando via BASH no Ubuntu 11.10 (Oneiric):

rsync -avz -e ssh test@remhost:~/something/ ~/bak/

Depois de apertar enter, recebo isto:

test@remhost's password:

Eu digito a senha e o rsync funciona.

Quero fazer o comando acima para inserir automaticamente a senha e passá-la como parâmetro ou inseri-la automaticamente e iniciar o trabalho.

Tentei executar rsync -avz -e ssh test:password@remhost:~/something/ ~/bak/mas ainda pede a senha e é chato.

Não quero ouvir falar de nenhum tipo de chave (RSA,DSA ou qualquer outra). Eu só quero um comando simples que me faça login e faça o trabalho.

EDITAR:Um cenário possível seria se a autenticação de chave pública estivesse desabilitada e você não pudesse alterar isso. Por exemplo, se você usar OpenSSH, precisará de privilégios de root no servidor para editar o arquivo sshd_confige adicionar arquivos PubkeyAuthentication yes.

EDITAR:Isto é o que finalmente funcionou para mim:

sshpass -p 'sshpassword' rsync --progress -avz -e ssh test@remhost:~/something/ ~/bak/

Observe que este método não é considerado seguro, pois envia a senha em texto simples e é vulnerável a ataques man-in-the-middle. É aconselhável usar a autenticação de chave para uma segurança mais forte.

Responder1

talvez tente sshpass.

parece bastante simples de usar... também está disponível através do apt.

Eu estava procurando por algo assim antes de copiar minhas chaves, mas como já tenho minhas chaves em todos os lugares que preciso, não perdi tempo para tentar fazer isso.

Observe a isenção de responsabilidade nesse tutorial em relação à visibilidade da sua senha.


Para todos que precisam fazer isso:

sshpass -p 'sshpassword' rsync --progress -avz -e ssh test@remhost:~/something/ ~/bak/

Responder2

Uma variação da sua solução que é mais segura contra ameaças à segurança é armazenar sua senha em um arquivo com permissões restritas e usar o -fsinalizador com shpass:

sshpass -f '/home/me/.password' rsync --progress -avz -e ssh
test@remhost:~/something/ ~/bak/

A diferença é que listar os processos em execução não mostrará sua senha na linha de comando, agora mostrará apenas o caminho do arquivo onde está sua senha.

Responder3

Não consigo imaginar nenhuma situação em que a autenticação de chave pública sem senha não seja a melhor solução para logins SSH/Rsync automatizados.

De qualquer forma, expectdeve ser uma maneira de alcançar o que você deseja fazer. Você não pode canalizar a senha para ssh, mas isso é algo muito semelhante. Como fazer isso, é respondidoaqui no stackoverflow.

Responder4

Isso também funciona:

system <<~ "RSYNC";
    rsync \\
      --rsh="sshpass -p '$password' ssh -p 22" \\
      --archive \\
      --verbose \\
      --progress \\
      --partial \\
      --human-readable \\
      "$directory" \\
      "$options{host}:${directory}"
RSYNC

ou seja. passando sshpassem --rshvez de na frente dersync

Este método junto com o uso da SSHPASSvariável de ambiente é descrito na seção Exemplos do manual:

https://www.freebsd.org/cgi/man.cgi?query=sshpass&sektion=1

informação relacionada