Quero configurar um trabalho RSync que se conectaria através do SSH.
Eu tenho meu computador (backup @ myhost) e o host remoto (test @ remhost) e preciso fazer backup da pasta ~ / algo com todo o seu conteúdo. O teste do usuário ssh somente tem acesso de LEITURA a todos os arquivos e pastas na pasta ~ /. Eu quero usar o rsync para copiar a pasta test @ remhost: ~ / something para a pasta backup @ myhost: ~ / bak.
Para esse fim, uso o seguinte comando via BASH no Ubuntu 11.10 (Oneiric):
rsync -avz -e ssh test@remhost:~/something/ ~/bak/
Depois de pressionar enter, recebo o seguinte:
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.
Eu tentei executar, rsync -avz -e ssh test:password@remhost:~/something/ ~/bak/
mas ele ainda pede a senha e é irritante.
Não quero ouvir sobre nenhum tipo de chave (RSA, DSA ou qualquer outro). Eu só quero um comando simples que me faça logon e faça o trabalho.
EDIT: Pode ser um cenário possível, se a autenticação de chave pública estiver desativada e você não puder alterar isso. Por exemplo, se você usa o OpenSSH, precisará de privilégios de root no servidor para editar sshd_config
e adicionar o arquivo PubkeyAuthentication yes
.
Edição: Isto é o que finalmente funcionou para mim:
sshpass -p 'sshpassword' rsync --progress -avz -e ssh test@remhost:~/something/ ~/bak/
Observe que esse método não é considerado seguro, pois envia a senha em texto sem formatação e é vulnerável a ataques man-in-the-middle. É recomendável usar a autenticação de chave para uma segurança mais forte.
Respostas:
talvez tente sshpass .
parece simples o suficiente de usar ... também está disponível no apt.
Eu estava procurando por algo assim antes de copiar minhas chaves, mas desde que eu tenho minha chave em todos os lugares que já preciso, de qualquer maneira, não tomei tempo para tentar isso.
Observe o aviso de isenção de responsabilidade nesse tutorial sobre a visibilidade de sua senha.
Para todos que precisam fazer isso:
fonte
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
-f
sinalizador comshpass
:A diferença é que a listagem dos processos em execução não mostrará sua senha na linha de comando, agora mostrará apenas o caminho para o arquivo em que está sua senha.
fonte
Não consigo imaginar nenhuma situação em que a autenticação de chave pública sem a senha não seja a melhor solução para logins ssh / rsync autmated.
De qualquer forma,
expect
deve ser uma maneira de conseguir o que você deseja fazer. Você não pode canalizar a senha para ssh, mas isso é algo muito semelhante. Como fazer isso, é respondido aqui no stackoverflow .fonte
Eu achei que o sshpass funciona, mas como o termanal diz que
SSHPASS read: Enter passphrase for key '/home/ubuntu/.ssh/id_rsa':
você precisa executá-lo, algo como isto:Onde
-P
especifica qual prompt procurar, descobri isso executandosshpass -v
e descobrindo que está procurando a frasepassword
que não existe.fonte
a primeira coisa é fazer ssh sem
passowrd/bypass
o login da senha, como você pode ver, podemos usarssh-copy-id -i ./ssh/id_rsa.pub
para direcionar a máquina.Após esse teste, a máquina pode ser remotamente ssh sem senha e depois sincronizar novamente no caminho da máquina local para a
target/server
máquinafonte