Tubo simples
Tente isto:
ssh one 'cat file' | ssh two 'cat > file'
O primeiro deve enviar o conteúdo do arquivo para sua máquina, enquanto o segundo deve enviar para a segunda máquina. Eu calcularia uma soma de verificação em ambas as extremidades após a transferência, para garantir que nada se perdesse ou fosse distorcido ao longo do caminho.
Túneis elaborados
Para aplicativos mais elaborados, você pode usar túneis ssh. Por exemplo, você poderia tentar algo assim:
ssh -R 5001:127.0.0.1:5002 one
ssh -L 5002:127.0.0.1:22 two
Em seguida, você pode abrir uma conexão em one
para a máquina localhost
port 5001
e ela será encaminhada duas vezes e terminará como uma conexão em two
to localhost
port 22
. Esta é a porta ssh, então você pode usar isso para outro scp, ou para o rsync, ou o que for. Você também pode iniciar um rsync
server em two
e encaminhar a porta 873 em vez de 22. Ou você pode usar nc
em ambos os lados para transferir dados brutos, usando um número de porta arbitrário.
O principal benefício entre a abordagem acima é que você tem uma conexão tcp bidirecional entre as duas máquinas, em vez de apenas um tubo unidirecional. Dessa forma, as duas partes podem trocar informações, o que é particularmente importante no caso rsync
.