Eu acho que a solução mais fácil é fazer um pipe nomeado no pc A. Um pipe nomeado é um arquivo que se comporta como um pipe padrão, ie ele passa ao longo de conteúdo assim que estiver disponível, sem armazenar nada per se . É um meio padrão de implementar o IPC, Inter Process Communication, nos sistemas * Nix.
mkfifo my-pipe
cria um pipe nomeado com o nome my-pipe . O único problema é que você não pode scp um pipe nomeado (o sistema operacional irá reclamar que o my-pipe não é um arquivo normal). Portanto, a maneira de fazer isso é: em um terminal no pcA, emita o seguinte comando:
cat my-pipe | ssh me@pcC 'cat > /path/to/destination/file'
Este comando transmite o conteúdo do pipe nomeado para o pcC, e isso é redirecionado para o arquivo de destino.
Em outro terminal, novamente no pcA, problema:
ssh me@pcB 'cat /path/of/source/file' > my-pipe
Este comando coloca na saída padrão o arquivo de origem localizado no pcB remoto e o redireciona para o pipe nomeado.
O pipe nomeado é esvaziado assim que o material entra. O fim do arquivo de pcB fecha ambas as conexões, para B e para C. Nada é armazenado em A. Neste ponto, você pode remover o tubo,
rm my-pipe.
Parece-me bastante simples.