como usar o rsync (usando ssh sem senha), com o sudo apenas no lado local?

5

Este comando funciona bem para mim com ssh sem senha:

rsync -aqve ssh ${user}@${remote_host}:/etc/bind /tmp/etc/bind

Desde que eu gostaria de rsync diretamente para o meu local / etc / bind com permissões de root, tentei:

sudo rsync -aqve ssh ${user}@${remote_host}:/etc/bind /etc/bind

Mas agora recebo uma solicitação de senha (isso é ruim).

Como faço para corrigir esta linha para copiar diretamente para o meu local / etc / bind sem um prompt de senha?

    
por kfmfe04 05.06.2014 / 14:25

1 resposta

6

Quando você faz isso com seu próprio usuário, você está usando as chaves SSH em seu próprio diretório $HOME/.ssh/ . Quando você estiver fazendo isso como root usando sudo , ssh procurará no diretório base do diretório .ssh - e suas chaves não estão lá.

Aqui estão quatro maneiras de corrigir isso - qualquer uma delas deve funcionar:

  1. Como root, crie novas chaves ssh para e adicione a parte pública ao authorized_keys para seu usuário no servidor remoto
  2. Copie suas próprias chaves SSH para o diretório .ssh do root. (Certifique-se de não sobrescrever quaisquer chaves existentes!)
  3. Conceda ao seu próprio usuário acesso de gravação ao diretório de destino. Considere as implicações de segurança antes de escolher este método!
  4. Como Chris Down diz, use suas chaves SSH existentes usando o comando

    $ sudo rsync -aqve 'ssh -i ~user/.ssh/id_rsa' \
         ${user}@${remote_host}:/etc/bind /etc/bind
    
por 05.06.2014 / 14:30

Tags