Назад | Перейти на главную страницу

ssh в локальную сеть за общедоступным IP (пересылка TCP)

Я хочу соединить (используя ssh) два удаленных компьютера в локальной сети, используя уникальный общедоступный IP-адрес X.X.X.X.

               |
HOST_A---------|
  172.1.1.2    |          _____________
               |---------|ROUTER PUBLIC|-----------|INTERNET|-------------|CLIENT
               |         _______________                                      
               |   172.1.1.1       X.X.X.X
HOST_B---------|
     172.1.1.3 |

У моего общедоступного IP-адреса есть ограничение на порт 22, поэтому я использую порт 1234. Переадресация портов 1234 маршрутизатора включена и направлена ​​на HOST_A. В настоящее время я могу получить доступ к HOST_B из клиента, выполняющего

$ ssh -p 1234 user@X.X.X.X

Howerver, я не могу получить доступ к HOST_B и не понимаю, как использовать опции -R и -L для ssh. Я читал и следую многим примерам в сети, и я не могу достичь HOST_B без входа в HOST_A ранее.

Я приветствую объяснение о TCP-пересылке, потому что я не уверен, можно ли войти в HOST_B с помощью ip X.X.X.X без настройки HOST_A.

Пример моего поиска: Как настроить ssh-туннель для пересылки ssh?

альтернативное решение для решения этой проблемы, чтобы доступ к оболочке SSH на ваш компьютер без IP Public с рабочего стола или просто смартфона (например, Android), установив на свой компьютер robotito, который хочет получить удаленный доступ к SSH.

  • Это позволит вам получить доступ к SSH из клиентских приложений Google Talk в любом месте.
  • Нет необходимости в общедоступном IP-адресе или специальных настройках.
  • Я бесплатный и с открытым исходным кодом, больше не оплачиваю никакие сервисы приложений.
  • Нет необходимости открывать порт SSH (сохраните свой компьютер)
  • Нет необходимости открывать туннелирование (например, VPN или что-то в этом роде)

Я сделал сценарий (протестирован на моей raspbian OS в Raspberry Pi), чтобы вы могли легко установить robotito на Raspberry Pi, Debian или Ubuntu Box (дистрибутив пакета debian). вот шаги, чтобы сделать ваш Linux-бокс удаленным:

  1. Откройте команду оболочки или вы можете назвать ее терминалом, перейдите в свою домашнюю папку, загрузите скрипт установщика с помощью команды:

    $wget https://opengateway.googlecode.com/files/robotito

  2. после этого запустите скрипт, введя команду:

    $sudo ./robotito

  3. а затем вы можете отредактировать файл credentials.rb из папки конфигурации, если robotito использует вашу учетную запись gtalk, и сохранить его, нажав ctrl + x и y. По умолчанию используется редактор nano.

  4. запуск robotito из папки robotito по команде

    $cd robotito

    $./jabbershd start

  5. Теперь, когда это сделано, вы можете использовать ssh из любого клиента Google Talk. Не забудьте добавить учетную запись robotito gtalk в свою учетную запись Google Talk и протестировать ее, общаясь друг с другом перед использованием учетной записи.

Я думаю, что лучше открыть 2 порта на маршрутизаторе и перенаправить их; один для host_a, как вы, а другой, например, 1235, для host_b. Итак, вы можете использовать

ssh -p 1234 user@X.X.X.X для host_a и

ssh -p 1235 user@X.X.X.X для host_b

Вы можете просто войти в HOST_A, а затем в HOST_B с помощью одной команды, если у вас есть доступ с HOST_B из HOST_A:

ssh -tA user@HOST_A "ssh user@HOST_B"

-t выделит псевдотонку. -A перенаправляет вашего агента, если вы используете одни и те же ключи rsa для доступа к HOST_A и HOST_B.

Это простой, быстрый и грязный способ получить терминал на HOST_B от клиента.