Eu tenho uma máquina a alguns saltos de distância e preciso configurar o encaminhamento de porta para transferir arquivos.
Editar: para ficar claro, são necessários vários saltos para acessar a máquina remota. Na minha máquina, configurei uma VPN, onde posso acessar 10.255.xx - essa é a única máquina à qual posso me conectar por meio da VPN. Depois de fazer o login no .xx, posso conectar-me a outras máquinas - .yy sendo uma delas.
Da minha máquina:
ssh -L 4567:localhost:4567 [email protected]
Então a partir dessa máquina:
ssh -L 4567:localhost:22 [email protected]
Eu posso então
scp -P 4567 me@localhost:/path/to/large/file.gz .
Eu deixei isso funcionando demais, apenas para descobrir que a transferência morreu em algum momento.
Já vi algumas sugestões para usar o rsync over ssh para retomar a transferência, mas não sei como configurá-lo. Isso é possível?
ssh
rsync
file-transfer
scp
ssh-tunnel
chris
fonte
fonte
scp [email protected]:/path/to/large/file.gz .
alcançaria exatamente o mesmo? Qual versão do scp (ssh) está instalada no cliente e no servidor?Respostas:
Em algumas versões do scp (a versão no computador de origem parece ser a chave), basta executar novamente o comando scp para reiniciar a transferência. Mas tenha cuidado! Se sua versão não suportar transferências parciais, o arquivo parcial será simplesmente substituído.
Os seguintes switches rsync são úteis para retomar uma transferência interrompida se o scp não suportar:
O comando
deve ter o efeito desejado. Observe que o
-p
comutador deve estar em minúsculas para o ssh.fonte
10.255.y.y
era o computador cliente.Use sftp em vez de scp
No seu caso:
Na página de manual do sftp:
fonte
O rsync usa ssh por padrão; talvez seja necessário especificar o comando ssh exato usando a opção -e do rsync. Ele também possui um --partial, que deve manter o arquivo incompleto, para que possa retomar a transferência.
fonte
Eu realmente não consigo ver qual é o sentido dos seus túneis, então aqui está como eu resolveria seu problema:
isso abre um túnel reverso da máquina local (localhost) para a máquina remota (remotehost). $ tunnelPort é a porta na qual o túnel pode ser encontrado no remotehost. $ localSSHPort é a porta na qual o sshd local é executado e $ remoteSSHPort é onde o sshd do remotehost escuta.
Agora que você está dentro do túnel (reverso!), Pode mais ou menos fazer o que Dennis propôs:
os sinalizadores -a e -z são explicados na página de manual do rsync, portanto, não os elaborarei. O que acontece agora é que, quando você executa o rsync no remotehost, como acima, ele envia todos os dados para a porta $ tunnelPort, que é então encaminhada para o sshd $ localSSHPort do localhost.
Espero que tenha ajudado.
fonte