Então, sua configuração é esta:
Local Machine --> Intermediate Server --> Remote Server
Se você conseguir executar o comando rsync no servidor remoto e sua máquina local estiver executando o sshd, você poderá fazer isso:
Faça o login no servidor intermediário com o seguinte comando ssh
ssh user@<intermediate server> -R 1024:localhost:22
Isso criará um túnel SSH reverso. Qualquer conexão SSH no servidor intermediário na porta 1024 será redirecionada de volta para sua máquina local.
Neste ponto, você estará logado no servidor intermediário. Você precisa então estender o túnel para o servidor remoto. Na execução do servidor intermediário:
ssh user@<remote server> -R 1024:localhost:1024
Agora, qualquer conexão SSH na porta 1024 no servidor remoto retornará ao servidor intermediário na porta 1024, que será então redirecionada para a sua máquina local. Ufa!
Agora precisamos envolvê-lo no rsync. O Rsync tem uma opção de shell remoto (-e) que você pode usar para especificar as opções do ssh. Então, no servidor remoto, você pode rodar (isso é um pouco de suposição de experiências passadas, pode precisar de alguns ajustes):
rysnc -<whatver rsync options you want> -e "ssh -p 1024" <source directory> <local machine user>@localhost
Lembre-se de sempre executar um comando rsync com --dry-run primeiro para ter certeza de que está fazendo o que você espera (juntamente com vários níveis de verbosidade -v, -vv ou -i ou -ii dependendo das versões do rsync envolvidas .).