quando executo o comando follow como usuário normal, tudo funciona corretamente:
fabio@myclient:~$ rsync -rv myserver:~/backup /home/fabio/backup/
Funciona sem nenhuma interação do usuário, mas preciso rodar em um script executado como root então tentei:
root@myclient:~# sudo -u fabio rsync -rv myserver:~/backup /home/fabio/backup/
e também tentei:
root@myclient:~# su - fabio -c "rsync -rv myserver:~/backup /home/fabio/backup"
ambos funcionam, mas me pergunte uma "frase secreta para chave", posso evitá-la?
Responder1
A "senha da chave" provavelmente vem do SSH not rsync
ou sudo
, que solicita a senha para desbloquear sua chave SSH privada.
Como eu realmente não recomendo que você use uma chave sem senha, considere as circunstâncias sob as quais o script é executado como root. O script sempre é executado como root algum tempo depois do login? Você concorda em inserir sua senha uma vez depois de fazer login?
Se for esse o caso, recomendo usar algo comokeychain
para garantir que o agente ssh iniciado como seu usuário seja usado pelo script enquanto está sendo executado como root. Você pode configurar isso para que você só precise inserir a senha uma vez, algum tempo após o login, e quaisquer invocações futuras não exijam interação.
Se este não for o caso, se o script precisar ser executado de forma autônoma, sem qualquer autenticação interativa sua, considere gerar um par de chaves especificamente para o script de backup e, em seguida, restringir o que ele pode fazer, seja autenticando-o como outro usuário no controle remoto. end (ou seja, não fabio
, mas, por exemplo, fabio-backup
), ou restringi-lo com o command=
argumento em seu .authorized_keys
arquivo na extremidade remota (embora isso seja um pouco mais complicado, pois requer olhar para a SSH_ORIGINAL_COMMAND
variável de ambiente; vejachaves_autorizadas(5)para detalhes)
Responder2
Sua chave privada ssh é protegida por senha. Quando você o executa manualmente como usuário (logado), ele usa o agente ssh onde você armazenou o keystore da senha uma vez.
No entanto, quando executado de forma autônoma, isso não acontece - afinal, o usuário pode nem estar logado (e, portanto, seu keystore indisponível). Para que funcione sempre, você precisa remover a senha da sua chave privada ssh ( ssh-keygen -p
quando estiver logado como usuário fabio
- basta pressionar enter para obter a nova senha e ela deverá ser removida).
Nota de segurança secundária: quando a chave privada não é protegida por senha, qualquer pessoa que obtiver acesso à fabio
conta também poderá fazer ssh para outros hosts permitindo essa chave, sem primeiro precisar detectar a senha do usuário)