4

Я предположил сценарий, который: A может получить доступ к B через SSH (B не может получить доступ к A, потому что nat), A может получить доступ к C через SSH (C не может получить доступ к A, потому что nat), B и C не могут получить доступ друг друга есть в разных сетях.

A-> B, A-> C, C-> B? Мой вопрос: как установить туннель или команду, чтобы C мог получить доступ к B?

3 ответа3

4

Чтобы создать ssh-туннель от B до C, выполните эти команды на хосте A:

ssh -n -R 3300:localhost:3300 B sleep 999999999 &
ssh -n -L 3300:localhost:22 C sleep 999999999 &

заменив B и C на соответствующие имена хостов.

Теперь на B вы можете

ssh -p 3300 localhost

и подключиться к хосту C. Если вы хотите разрушить туннель, на хосте A выведите команды ssh из фона и введите Ctrl-C.

1

Тесно связанной вариацией этого вопроса является случай, когда ни B, ни C не могут быть доступны, но оба могут получить доступ к A. Цель состоит в том, чтобы позволить C получить доступ к B.

то есть B -> A, C -> A, C -> B?

Из Б

ssh -n A -R 9007:localhost:22 sleep 999999999 &

Из C

ssh -n A -L 9008:localhost:9007 sleep 999999999 &

Из C

ssh -p 9008 localhost
-3

Похоже, вам нужно изучить "переадресацию портов" или, возможно, даже разрешить DNZ. Таким образом, каким бы ни был ваш общедоступный IP-адрес, это все, что должен знать кто-либо за пределами вашей локальной сети. Это и любой номер порта, к которому подключается ваш VPN-сервер / клиенты. (Я предполагаю, что вы пытаетесь использовать PPTP-туннелирование с VPN и не пытаетесь запустить веб-сервер или что-то в этом роде.)

В противном случае, если это все в одной локальной сети, возможно, у вас проблема с брандмауэром (мое первое подозрение), проблемы с DNS или, возможно, проблемы с DHCP. Экзотически это может быть и неисправный переключатель. Но я серьезно сомневаюсь, что у вас есть проблемы с NAT (Network Address Translation) в вашей локальной сети.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .