Tentando executar o rsync entre dois servidores remotos através do encaminhamento de porta reversa com a chave ssh

1

Estou tentando executar um rsync entre dois servidores. Estou baseando as coisas neste post: Como arquivos rsync entre dois controles remotos?

O que eu acho que falta é como facilitar o rsync (via ssh) quando uma chave (a mesma chave) é necessária para o login em cada servidor.

Aqui está o mais próximo que eu tenho:

ssh -i ~/path/to/pem/file.pem -R localhost:50000:SERVER2:22 ubuntu@SERVER1 'rsync -e "ssh -p 50000" -vur /home/ubuntu/test localhost:/home/ubuntu/test'

Parece que a conexão inicial funciona corretamente, mas não consigo descobrir como especificar a chave e o nome de usuário para o SERVER2.

Alguma opinião?

    
por onassar 31.03.2016 / 17:34

2 respostas

1

Eu recomendaria o uso do agente ssh - dessa forma você só precisa de um par de chaves onde sua parte privada é mantida em sua estação de trabalho. Não há necessidade de replicá-lo em outros servidores (o que é uma má ideia como tal) ou criar outros pares de chaves para servidores específicos.

Há mais de uma maneira de iniciar o agente ssh, você pode ler mais sobre isso . Aqui está o mais simples:

eval ($ssh-agent)

então você adiciona sua (s) chave (s) ao agente

ssh-add /path/to/private.key

Isto pede-lhe uma frase secreta, se a sua chave estiver protegida. Uma vez adicionado, você pode se conectar aos servidores com a parte pública sem solicitar.

Além disso, você pode continuar ssh do servidor para outro, e o agente levará sua autenticação ainda mais, desde que a opção AllowAgentForwarding de servidores ssh no seu caminho esteja definida como yes, que é principalmente configuração padrão.

Bem, isso foi um prefácio:)

Agora, de volta ao seu caso. A menos que o encaminhamento de porta seja proibido pela configuração do servidor, a abordagem é a seguinte:

  1. Verifique se você pode se conectar ao SERVER2 usando o agente -

ssh ubuntu@SERVER1 'echo Hi from $(hostname)'

  1. Verifique os trabalhos de encaminhamento de agente de SERVER1 para SERVER2

ssh -t ubuntu@SERVER1 ssh SERVER2 'Hi from $(hostname)'

  1. Iniciar uma conexão somente com o encaminhamento de porta

ssh -R localhost:50000:SERVER2:22 -Nv

e deixe esta janela do terminal aberta até agora.

  1. Em uma nova janela de terminal, efetue logon no SERVER1 e, a partir daí, verifique se a porta é encaminhada conforme solicitado:

[SERVER1]ssh -p 50000 localhost 'echo Hi from $(hostname)'

você deve ver o Hi do SERVER2

Se todas as 4 etapas acima funcionarem para você, você poderá executar seu comando rsync - apenas omitir -i part

    
por 31.03.2016 / 19:07
1

Três etapas:

  1. Crie um ~/.ssh/config no SERVER1 com tudo o que você precisa para se conectar ao SERVER2 , como:

    Host SERVER2
      Port 50000
      User user2
      Hostname localhost
      IdentityFile ~/path/to/pem/file.pem
    
  2. Tente se conectar a SERVER2 hosts sem nenhum argumento (de SERVER1 após iniciar o encaminhamento de porta):

    ssh SERVER2 # works?
    

    Se não, adicione -vvv e investigue o que deu errado.

  3. Execute o comando rsync:

    ssh -i ~/path/to/pem/file.pem -R localhost:50000:SERVER2:22 ubuntu@SERVER1 \
      'rsync -vur /home/ubuntu/test SERVER2:/home/ubuntu/test'
    

Note que você precisa ter a chave de autenticação disponível no SERVER1 , se você quiser fazer desta forma. É melhor criar uma nova chave lá do que copiar sua chave privada da sua máquina.

    
por 31.03.2016 / 18:17