Ви також можете зробити це в зворотному порядку, а може бути і простіше.
Припустимо, у вас відкрито сеанс ssh з машиною, на яку потрібно надіслати файл. Цей найдальший комп'ютер, ми будемо називати цей hop2. Ваш хост "проксі" буде hop1. Комп'ютер, який має походження файлу, ми будемо називати це походження.
origin:~/asdf.txt --> hop1 --> hop2:~/asdf.txt
Ви можете створити тунелі, зробивши локальний порт доступним на віддаленому ПК. Таким чином, ми визначаємо порт, який потрібно відкрити на віддаленому ПК, що буде перенаправленням на той порт, який ви перетягнули з собою під час побудови тунелю.
На хоп2:
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.
На хоп1:
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
Таким чином, ви можете мати деяку кількість довільних хмелів між ними, і з ними легше працювати з точки зору з'єднання більше, ніж двох хмелів.