Bạn cũng có thể làm điều này ngược lại và có thể dễ dàng hơn.
Giả sử bạn có một phiên ssh được mở bằng máy bạn muốn gửi tệp đến. PC xa nhất này, chúng tôi sẽ gọi đây là hop2. Máy chủ "proxy" của bạn sẽ là hop1. PC có nguồn gốc tệp, chúng tôi sẽ gọi nguồn gốc đó.
origin:~/asdf.txt --> hop1 --> hop2:~/asdf.txt
Bạn có thể xây dựng các đường hầm làm cho một cổng cục bộ có sẵn trên một PC từ xa. Do đó, chúng tôi đang xác định một cổng để mở trên PC từ xa, đây sẽ là một chuyển hướng đến cổng mà bạn đã kéo qua khi bạn xây dựng đường hầm.
Trên hop2:
ssh -R 5555:127.0.0.1:22 <hop1_user>@<hop1_IP>
#this has the effect of building a tunnel from hop2 to hop1, making hop2's port 22 available on hop1 as port 5555
Bây giờ trong phiên đường hầm đã mở, bạn có thể thực hiện tương tự từ hop1 đến file_origin.
Trên hop1:
ssh -R 6666:127.0.0.1:5555 <origin_user>@<origin_IP>
#this has the effect of building a tunnel from hop1 to origin while also pulling the active tunnel with it, making hop1's port 5555 (hop2's port 22) available on origin as port 6666.
Bây giờ bạn đã được tạo đường hầm từ hop2 đến hop1 để khởi tạo. Thật trùng hợp, hiện tại cả hai cổng 5555 và 6666 đều được mở trên nguồn gốc, là các chuyển hướng đến cổng 22. của hop2. Trong phiên này, cả hai cách sau đây đều là các tuyến scp hợp lệ đến hop2:
Về nguồn gốc:
scp -P 6666 ~/asdf.txt <hop2_user>@<127.0.0.1>:~/asdf.txt
Theo cách này, bạn có thể có một số bước nhảy tùy ý ở giữa và dễ dàng hơn để làm việc với nhau về mặt kết nối nhiều hơn hai bước nhảy.