익명 09:48

Sending files with scp via 2 intermediate hosts

Sending files with scp via 2 intermediate hosts

I need to copy files with scp from host A to host D, where D is reachable only via host C. This is normally done by using a proxy:

ProxyCommand ssh -W %h:%p C

Now, due to some network issue, the copy is very slow (about 100 KB/s). However, I can copy files from host A to some other host B and from host B to host D (via C) both at a reasonable speed (more than 10 MB/s). The issue is that host B has little free space on the disk. So I need to instruct scp that on B, data need to be sent immediately to D (via C) instead of being stored on B.

I thought that a ProxyJump would be the solution, e.g.

scp -J B,C file D:

but this doesn't solve the slowness issue, which is still 100 KB/s.

What is the correct method?

Note: As a workaround, I can type on host B:

scp -3 A:file D:

(where a ProxyCommand is used in the ssh configuration for host D as mentioned above), and the file transfer is fast. So I would like some equivalent for a scp command typed on host A.

EDIT: Whether I use scp file D: (with the ProxyCommand to transfer via C) or scp -J B,C file D:, if I interrupt the scp with Ctrl-C, I can see that the kernel is still sending data via the Ethernet interface for about 20 seconds. Same issue with the wifi of my FTTH box (instead of Ethernet), but the issue completely disappears if I use a wifi hotspot of one of my phones via the mobile network.



Top Answer/Comment:

Comment: Another workaround is to create a tunnel from D to A with ssh -f -N -R 4000:localhost:22 A, and on A, use localhost:4000 instead of D. This is a way to bypass C, where the problem probably lies. But this doesn't answer the question of having a method directly usable from host A.

상단 광고의 [X] 버튼을 누르면 내용이 보입니다