2

У меня есть следующие SSH серверы / клиенты:

A - без публичного IP

B - публичный IP

C - без публичного IP

Я знаю, я могу установить SSH соединение от A до C следующим образом:

1) Крюк C к B. Делать из C:

ssh -R 10100:localhost:22 B_IP

2) Установите переадресацию портов с A на C, используя перехват B, чтобы иметь возможность использовать ssh-agent на компьютере A:

ssh -L 5000:localhost:10100 B_IP

3) Теперь я могу использовать мои ssh-ключи для "прямого" доступа к C из A:

ssh -p 5000 localhost

... моя точка зрения такова:

Могу ли я каким-то образом установить новое "чистое" соединение от А до С, чтобы после того, как машина B вышла из строя, я мог продолжить свою работу?

Я думаю, что это будет возможно до тех пор, пока эти два компьютера понимают, что они уже имеют общее соединение, или я ошибаюсь?

Спасибо за ваше время и идеи :)

2 ответа2

2
  • Обычный метод - настроить "переадресацию порта NAT" на маршрутизаторе A или C. (Как это сделать, зависит от роутера, но везде есть инструкции.) После того, как вы это сделаете, вы можете подключиться к общему адресу C-router + "перенаправленному" порту, и соединение пройдет через C.

    (Примечание: переадресация портов NAT и переадресации портов SSH - это схожие, но разные вещи, такие как молоток и отвертка. Не путайте их.)

  • Если у вас нет административного доступа ни к одному из маршрутизаторов, вы можете попробовать использовать UPnP или NAT-PMP для настройки правила переадресации портов, как это делают многие игры и программы P2P. Для этого используйте команды upnpc или natpmpc .

  • Если ни один из вышеперечисленных методов не сработает, вам понадобится пробить NAT . (См. Также статьи о дыроколах по TCP и ICMP .)

    К сожалению, хотя он широко используется в различных специфических программах, похоже, что для TCP не так много общих инструментов, хотя chownat может работать.

1

Это, вероятно, невозможно, если вы не можете переадресовывать порты на маршрутизаторах, но в этом случае вам вообще не нужен компьютер C.

Дело в том, что в вашем примере вы не идете напрямую из A -> C, пакеты все еще проходят через B.

Если у вас есть другой компьютер с общедоступными адресами, вы, вероятно, можете настроить настройку VPN в топографии «звезда» и использовать маршрутизацию между VPN для создания виртуальной сети, в которой один из общедоступных хостов может упасть и все может продолжать работать , Я сделал это с OpenVPN - есть несколько ошибок - одним из важных является отключение фильтрации обратного пути.

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