Tengo una máquina a un par de saltos y necesito configurar el reenvío de puertos para transferir archivos.
Editar: para ser claros, se necesitan los múltiples saltos para acceder a la máquina remota. Desde mi máquina, configuré una VPN, donde puedo acceder a 10.255.xx, que es la única máquina a la que me puedo conectar a través de la VPN. Una vez que inicie sesión en .xx, puedo conectarme a otras máquinas .yy es una de esas.
De mi maquina:
ssh -L 4567:localhost:4567 [email protected]
Entonces de esa máquina:
ssh -L 4567:localhost:22 [email protected]
Entonces puedo
scp -P 4567 me@localhost:/path/to/large/file.gz .
Dejé esto corriendo por la noche, solo para descubrir que la transferencia murió en algún momento.
He visto un par de sugerencias para usar rsync a través de ssh para reanudar la transferencia, pero no tengo claro cómo configurarlo. es posible?
ssh
rsync
file-transfer
scp
ssh-tunnel
Chris
fuente
fuente
scp [email protected]:/path/to/large/file.gz .
lograría exactamente lo mismo? ¿Qué versión de scp (ssh) está instalada en el cliente y el servidor?Respuestas:
Con algunas versiones de scp (la versión en la computadora fuente parece ser la clave), basta con volver a ejecutar el comando scp para reanudar la transferencia. ¡Pero ten cuidado! Si su versión no admite transferencias parciales, el archivo parcial simplemente se sobrescribirá.
Los siguientes modificadores rsync son útiles para reanudar una transferencia interrumpida si scp no lo admite:
El comando
debería tener el efecto deseado. Tenga en cuenta que el
-p
modificador debe estar en minúsculas para ssh.fuente
10.255.y.y
era la computadora del cliente.Use sftp en lugar de scp
En tu caso:
Desde la página de manual de sftp:
fuente
rsync usa ssh por defecto, puede que tenga que especificar el comando ssh exacto usando el interruptor -e de rsync. También tiene un --partial que debe mantener el archivo incompleto para que pueda reanudar la transferencia.
fuente
Realmente no puedo ver cuál es el punto de sus túneles, así que así es como iría a resolver su problema:
esto abre un túnel inverso desde la máquina local (localhost) a la máquina remota (remotehost). $ tunnelPort es el puerto en el que se encuentra el túnel en remotehost. $ localSSHPort es el puerto en el que se ejecuta el sshd local y $ remoteSSHPort es donde escucha el sshd de remotehost.
Ahora que estás dentro del túnel (¡hacia atrás!) Puedes hacer más o menos lo que Dennis propuso:
Los indicadores -a y -z se explican en la página de manual de rsync, por lo que no los explicaré. Lo que sucede ahora es que cuando ejecuta rsync en remotehost como se indica arriba, empuja todos los datos al puerto $ tunnelPort que luego se reenvía al sshd $ localSSHPort de su localhost.
Espero que haya ayudado.
fuente