Rsync sem senha sobre SSH sem autenticação de chave [não seguro]

12

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_confige 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.

Sorin-Mihai Oprea
fonte
3
Você não receberá respostas se disser às pessoas para não lhe responderem.
Mike Scott
7
Isso não tem sentido. Qual é o problema com a autenticação de chave? Se a autenticação baseada em chave estiver configurada, a partir desse ponto, você terá apenas um comando simples que executa o trabalho, automaticamente, exatamente o que deseja. Então, eu não consigo ver qual é o problema com isso. Armazenar a senha em algum lugar para especificá-la "automaticamente" é uma das maiores falhas de segurança que posso imaginar. Qual é o objetivo?
LGBT
Não preciso que ninguém me dê palestras sobre segurança. Eu já conheço as implicações. Eu só tenho que deixar tudo no servidor como está e não mudar nada. Para sua informação, eu já tentei isso com chaves e ainda me pede a senha, portanto, seu argumento é inválido!
Sorin-Mihai Oprea
1
Não, por boas razões, não existe esse parâmetro por padrão. Veja a resposta de Migs se você deseja esse parâmetro.
Lumbric
2
@ Sorin Mihai Oprea: Bem, se não funcionar para você, está ruim? Interessante. Para sua informação: como engenheiro de sistemas da Internet que trabalha em um ISP, usamos autenticação baseada em chave com ssh em mais de 100 servidores. Funciona para nós, interessante. Não chame algo ruim apenas porque você não entende como ele funciona e como deve ser configurado. Se você estiver certo, isso não funcionaria para ninguém que atraísse alguma atenção como um dos principais erros de implementação do servidor ssh :) Portanto, meu argumento não é inválido, mas você não pode configurá-lo bem por algum motivo. Não é o mesmo, desculpe.
LGB

Respostas:

29

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:

sshpass -p 'sshpassword' rsync --progress -avz -e ssh test@remhost:~/something/ ~/bak/
Migs
fonte
Você é muito bem-vindo. Embora eu concorde com o restante das pessoas aqui de que a autenticação de chave pública é a melhor solução para esse assunto, às vezes são necessários métodos alternativos, desde que estejamos cientes das vantagens e desvantagens ao usar alternativas.
precisa saber é o seguinte
De fato ... mas é por isso que é chamado de código aberto, certo? Vários sabores ... mesmo resultado!
Sorin-Mihai Oprea
1
Obrigado por não apenas dizendo senhas são ruins uso não faça eles, alguns de nós em equipamentos legados OLDDDD só precisa destes para sobreviver até que o novo equipamento chega :)
Theodore Howell
6

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 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.

Andrew Allaire
fonte
Esta resposta é melhor que a resposta aceita.
vietnguyen09
1

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, expectdeve 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 .

lumbric
fonte
Obrigado pela sugestão, mas eu realmente achei o sshpass muito mais simples!
Sorin-Mihai Oprea
1

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:

sshpass -P passphrase -p 'password' rsync /path/to hostname:/destination/path -av --progress -e ssh

Onde -Pespecifica qual prompt procurar, descobri isso executando sshpass -ve descobrindo que está procurando a frase passwordque não existe.

GuySoft
fonte
0

a primeira coisa é fazer ssh sem passowrd/bypasso login da senha, como você pode ver, podemos usar ssh-copy-id -i ./ssh/id_rsa.pubpara 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/servermáquina

budi satriyo
fonte