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 lá . 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:
- Verifique se você pode se conectar ao SERVER2 usando o agente -
ssh ubuntu@SERVER1 'echo Hi from $(hostname)'
- Verifique os trabalhos de encaminhamento de agente de SERVER1 para SERVER2
ssh -t ubuntu@SERVER1 ssh SERVER2 'Hi from $(hostname)'
- 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.
- 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