RSYNC sobre SSH solicitando senha

1

Eu olhei para várias perguntas, mas não pareço encontrar exatamente o que estou procurando.

Eu criei um script no qual estou tentando executar o rsync sobre o ssh, que eventualmente será colocado em uma tarefa do cron. As variáveis são todas definidas e a parte importante do script é a seguinte:

$RSYNC -az --stats -e "$SSH -i $KEY" $RUSER@RHOST:$RPATH $LPATH

KEY aponta para minha chave privada, com o público copiado para RHOST e adicionado a usuários autorizados.

Atualmente, as permissões no RPATH são 775, quando tento executar o script, sou solicitado a fornecer a senha do RHOST, que entrar em um cron job não é muito útil.

Se, no entanto, eu alterar as permissões no RPATH para 755, o script será executado sem solicitar uma senha. Infelizmente não posso fazer essa alteração permanentemente.

Então eu tenho uma pergunta em três partes;
Primeiro é este rsync ou ssh me causando problemas?
Segundo, por que isso se comporta dessa maneira? Não faz sentido para mim permitir que o acesso de gravação em grupo ao diretório faça a diferença na solicitação de uma senha.
Em terceiro lugar e finalmente estou procurando idéias sobre como resolver isso. RUSER tem privilégios de sudo. (Eu prefiro não incorporar a senha na linha de comando).

Agradecemos antecipadamente pela ajuda!

    
por progAK 06.02.2014 / 18:46

2 respostas

1

Então aqui está o que acabei fazendo, @MariusMatutiae me levou na direção certa!

Com base em algumas outras recomendações, descobri que estou executando o rsync como sudo em ssh. Eu criei um novo usuário BKUPuser no remotehost e adicionei este usuário ao grupo RHOST que possui os arquivos que estou tentando fazer backup.

Em sudoers adicionei duas linhas:
BKUPuser ALL= NOPASSWD:/usr/bin/rsync isto parou o erro: "sudo: no tty presente e nenhum programa askpass especificado" ( link ) Eu entendo que isso tem algumas vulnerabilidades de segurança, mas nenhuma das máquinas é visível para o mundo externo. / p>

A segunda adição:
Defaults:user !requiretty este erro parou: "sudo: desculpe, você deve ter um tty para executar o sudo"

Então o comando acabou sendo:
$RSYNC -e "$SSH -i $KEY -t -l BKUPuser" --rsync-path='sudo rsync'-az --stats BKUPuser@RHOST:$RPATH $LPATH

O único problema que ainda tenho é receber um erro "O terminal Psuedo não será alocado porque o stdin não é um terminal." Como o rsync está fazendo o backup dos arquivos, é apenas um aborrecimento neste momento. Eu tentei usar -t -t como sugerido link mas sem sorte.

    
por 13.02.2014 / 21:23
1

De acordo com o manual ( man rsync ), você não está usando a opção -l correta:

If you need to specify a different remote-shell user, keep in mind that the user@ prefix in front of the host is specifying the rsync-user value (for a module that requires user-based authentication). This means that you must give the â-l userâ option to ssh when specifying the remote-shell, as in this example that uses the short version of the --rsh option:

       rsync -av -e "ssh -l ssh-user" rsync-user@host::module /dest

   The "ssh-user" will be used at the ssh level; the "rsync-user" will be used to log-in to the "module".
    
por 06.02.2014 / 20:03