O '-A' só carregará identidades carregadas no ssh-agent. ('-i' no comando não será suficiente.)
Que tal algo assim:
ssh-agent sh -c "ssh-add test_ident; rsync -avr --rsh='ssh -TA hostA ssh -TA ' foo/ hostB:/var/tmp/foo/"
Eu preciso fazer um rsync de um servidor de destino com um servidor no meio e tenho a mesma chave pública no servidor de destino e do meio. Eu quero usar essa chave para que eu não precise fazer autenticação de senha.
local --ssh--> middle --ssh--> target
O Método de Leitura 1 de Usar o rsync através de um firewall faz parecer que isso é factível, mas eu já consegui descobrir a parte ssh da sintaxe do comando.
Quando eu tento
ssh -i $KEY -A user@middle ssh user@target
Eu obtenho
Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,password).
É evidente que o encaminhamento de agentes não está acontecendo como eu esperava.
Idealmente eu gostaria de colocar tudo em um comando sem ter que colocar nada nos arquivos ~ / .ssh / config. Quais são todas as etapas para fazer um rsync nessa situação?
Obrigado Everett
Pessoalmente, faço isso em dois saltos com o seguinte script:
#!/bin/bash
ssh -fN [email protected] -L2211:target.foo:22
rsync "-e ssh -p 2211" /Users/me/dir1/ root@localhost:/backup/dir1/ -avz --progress --delete-after
rsync "-e ssh -p 2211" /Users/me/dir2/ root@localhost:/backup/dir2/ -avz --progress --delete-after
mod conforme necessário.
Parece mais fácil do que jogar com as opções de rsync e se o seu alvo e meio tiverem a sua chave, você não deve ser solicitado.