Как только вы сможете добраться до рабочего сервера, вы легко сможете это сделать.
Предположение для примера
- исходная система (дома): 10.0.0.1
- рабочая система (сервер перехода): 10.0.0.2 (ssh работает на стандартном порту 22/TCP)
- целевой сервер: 10.0.0.3 (ssh работает на стандартном порту 22/TCP)
- перенаправление портов через сервер B
Открыв ssh-туннель, вы можете установить локальный порт вперед (-L [<локальный_адрес>:]<локальный_порт>:<удаленный_адрес_к_переадресации>:<удаленный_порт_к_переадресации> ). Затем вы можете открыть другое соединение ssh, указывающее <local_addr>, но с параметром -p <локальный_порт> или первый туннель. С этой конфигурацией:
- первый туннель должен быть до остальных работает
- у вас может быть больше соединений через первый туннель (больше соединений ssh, соединение scp,...)
(1) ssh -L 10022:10.0.0.3:22 10.0.0.2
(2) ssh -p 10022 127.0.0.1
(3) scp -P 10022 <локальный_файл> 127.0.0.1:<файл_назначения>
+-----+ +-----+ +-----+
| А |=== 1 ==| Б | | С |
| | -- 2 - | -2- | - 2 -> | |
| | -- 3 -- | -3- | - 3 -> | |
| |========| | | |
+-----+ +-----+ +-----+
10.0.0.1 10.0.0.2 10.0.0.3
- родные ssh-соединение с использованием «родного» джамп-хоста
ssh предлагает «родную» поддержку для этого типа соединения, используя -J <пункт назначения> параметр. Для спецификации пункт назначения рекомендуется использовать файл конфигурации (~./ssh/config).
Примером кода будет (внешнее соединение "прозрачно")
(1) ssh-J 10.0.0.2 10.0.0.3
+-----+ +-----+ +-----+
| |========| Б | | С |
| | -- 1 - | -1- | - 1 -> | |
| |========| | | |
+-----+ +-----+ +-----+
10.0.0.1 10.0.0.2 10.0.0.3