Чтобы получить доступ к машине A (за брандмауэром) с машины C через промежуточную машину B (вне брандмауэра), сделайте следующее:
На машине А:
ssh -2 -N -l [acct on B] -g -R 4001:localhost:22 MachineB
'-g' может быть или не быть обязательным. Это то, что я использую.
Вы можете выбрать любой порт, кроме «4001».
Затем на машине B:
ssh -p4001 -g -L 9999:machineA:22 localhost
Обратите внимание, что «machineA» также может быть «127.0.0.1». Не уверен на 100% - эксперимент.
'-g' делает порт 9999 также доступным для других машин, внешних по отношению к машине B.
Пропуск -g делает порт 9999 доступным только для других процессов на компьютере B.
Затем на машине C:
ssh -p9999 me@MachineB
Вуаля!
Вы также можете получить доступ к другой машине, D, в сети A из C. Сделайте это на MachineB:
ssh -p4001 -g -L 9999:[some machine on MachineA's network]:[some port] localhost
Это позволяет вам получить доступ к порту на другом компьютере в сети MachineA.
Таким образом, если существует машина D, также за брандмауэром в той же сети, которая находится рядом с машиной A, вы можете получить к ней доступ с машины C, как если бы вы находились за машиной A.
Например, если Machine D - это сервер Windows Server, и вы хотите использовать удаленный рабочий стол с компьютера C, который также является Windows Box, на компьютер D, сделайте следующее:
Машина А:
ssh -2 -N -l [acct on B] -g -R 4001:localhost:22 MachineB
(это то же самое)
Машина Б:
ssh -p4001 -g -L 9999:machineD:3389 localhost
Компьютер C: запустить клиент RDP и подключиться к компьютеру MachineB:9999
BAM! Вы подключены к Windows Server Box (компьютер D) с компьютера C.