คุณสามารถทำสิ่งนี้ได้ในทางกลับกันและอาจจะง่ายกว่า
สมมติว่าคุณเปิดเซสชัน ssh ด้วยเครื่องที่คุณต้องการส่งไฟล์ไป พีซีเครื่องนี้ที่ไกลที่สุดเราจะเรียกว่า hop2 นี้ โฮสต์ "proxy" ของคุณจะเป็น hop1 พีซีที่เป็นแหล่งกำเนิดไฟล์เราจะเรียกแหล่งกำเนิดนั้น
origin:~/asdf.txt --> hop1 --> hop2:~/asdf.txt
คุณสามารถสร้างอุโมงค์ทำให้มีพอร์ตในตัวเครื่องบนพีซีระยะไกล เราจึงกำหนดพอร์ตที่จะเปิดบนพีซีระยะไกลซึ่งจะเป็นการเปลี่ยนเส้นทางไปยังพอร์ตที่คุณดึงมากับคุณเมื่อคุณสร้างอุโมงค์
ใน 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
ขณะนี้ในเซสชันอุโมงค์ที่เปิดคุณสามารถทำเช่นเดียวกันจาก hop1 ถึง file_origin
ใน 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.
ตอนนี้คุณถูกส่งจาก hop2 ไปยัง hop1 ไปยังต้นทาง ตอนนี้ทั้งพอร์ต 5555 และ 6666 เปิดพร้อมกันแล้วซึ่งถูกเปลี่ยนเส้นทางไปที่พอร์ตของ hop2 22 ภายในเซสชันนี้ทั้งสองต่อไปนี้เป็นเส้นทาง scp ที่ถูกต้องไปยัง hop2:
บนกำเนิด:
scp -P 6666 ~/asdf.txt <hop2_user>@<127.0.0.1>:~/asdf.txt
ด้วยวิธีนี้คุณสามารถมีจำนวนฮ็อปที่กำหนดเองได้และมันง่ายกว่าที่จะทำงานร่วมกันในแง่ของการผูกมัดกันมากกว่าสองฮ็อพ