
У меня есть Macbook A
, публичный сервер B(public IP: 1.2.3.4, internal IP: 10.0.0.2)
, внутренний сервер.C(internal IP: 10.0.0.3)
A
может подключаться B
по публичному IP B и B
может подключаться C
по частному IP C, но A
не может напрямую подключаться кC
Теперь я хочу подключиться к C:2345
из A
, поэтому я думаю, что могу сделать переадресацию портов в B:1234=>C:2345
?
Какую команду мне следует выполнить и на каком сервере?
Я пытался:
ssh -NfR 1234:localhost:2345 10.0.0.3
ssh -L 1234:0.0.0.0:2345 10.0.0.3
Ни то, ни другое не работает.
решение1
Делатьточното, что вы просили ( B:1234=>C:2345
), должно быть запущено на B
:
# Not recommended. Read along.
ssh -NgL 1.2.3.4:1234:localhost:2345 10.0.0.3
Также требуется открыть 1234
порт в B
брандмауэре. Затем подключитесь к 1.2.3.4:1234
извне, чтобы получить доступ, 10.0.0.3:2345
как будто вы подключаетесь из него C
самого (через его интерфейс обратной связи). Подключиться может кто угодно, так что имейте это в виду, если сервер C
(какой бы он ни был) не защищен паролем или что-то в этом роде.
Более простой и гораздо более безопасный способ добраться из A
в C
следующий. Это не делает именно то, что вы просили, но, вероятно, это то, что вам нужно. На A
:
ssh -NL 1234:10.0.0.3:2345 1.2.3.4
Затем подключитесь к 127.0.0.1:1234
, чтобы попасть на A
порт . увидите трафик, входящий из . Это соединение доступно только для , поэтому этот метод намного безопаснее предыдущего.2345
C
C
B
A
Если вы хотите разрешить A
подключение другим компьютерам (например, из локальной сети), вам следует использовать -g
опцию и указать адрес привязки. Например:
ssh -NgL A_LAN_address_here:1234:10.0.0.3:2345 1.2.3.4
В этом случае перенастройте брандмауэр A
соответствующим образом, затем подключитесь к A_LAN_address_here:1234
.
решение2
На Mac сначала нужно сделать следующее:
ssh -L2345:10.0.0.3:2345 10.0.0.2
Это открывает локальный порт 2345 на вашем Mac, который является прямым подключением к :2345 на 10.0.0.3
Затем вы просто получаете доступ 127.0.0.1:2345
на своем Mac. Все, что идет на этот порт, будет туннелироваться через ssh и попадать на 10.0.0.3:2345
. Для этого сервера это будет выглядеть как идущее с 10.0.0.2
.