ssh в локальну мережу за загальнодоступним IP (переадресація TCP)


0

Я хочу з'єднати (використовуючи ssh) два віддалені комп'ютери в локальній мережі, використовуючи унікальний загальнодоступний IP XXXX

               |
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 користувач @ XXXX

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

Я вдячний за пояснення щодо переадресації TCP, оскільки я не впевнений, чи можна ввійти в HOST_B за допомогою ip XXXX без налаштування HOST_A.

Екземпляр мого пошуку: Як налаштувати ssh тунель для пересилання ssh?


Чи можете ви пояснити, які обмеження у вас є для публічного IP XXXX? Звичайне обмеження полягає в тому, що у вас є лише ОДИН публічний IP. Рідше, але все-таки дуже реально, ви не можете використовувати певні часто атаковані порти. Але чи є у вас обмеження, що ви можете використовувати лише один порт на ньому (1234)? Один з відповідей нижче пропонує використовувати номер 2-го порту (1235) та направити його на хост B. Ви також не пояснили, який номер порту використовується між маршрутизатором та хостами. Це 1234 чи 22?
Скаперен

Відповіді:


1

Я думаю, що краще ви можете відкрити 2 порти на маршрутизаторі та перенаправити їх; один для host_a, як ви зробили, і інший, наприклад 1235, для host_b. Тож можна використовувати

ssh -p 1234 user@X.X.X.X для хоста_а та

ssh -p 1235 user@X.X.X.X для хоста_б


Дякую @Brigo, але я не можу цього зробити через мережеві обмеження на XXXX
user43010

ви можете перенаправити порт маршрутизатора на один хост, а не на обидва. Маршрутизатор відправляє трафік з порту 1234 на host_a, тому host_b цього не бачить. Якщо ви не можете використовувати інший порт, то найкраще обхідне з'єднання - це підключення до host_b від host_a, як сказав моховий.
Бріго

Ви можете налаштувати переадресацію для двох різних портів (на одному загальнодоступному IP-адресі) для переходу до вказаних комбінацій хост / порт. Наприклад, порт 1234, який переходить до хостаA / 22, і порт 1235, який переходить до хостаB / 22. НАЙБІЛЬШІ маршрутизатори з переадресацією можуть це зробити. Кілька не може поганий дизайн.
Скаперен

1

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

  • Це дозволить вам отримати доступ до SSH за допомогою програми Google Talk Client де завгодно.
  • Немає необхідності в публічній IP-адресі або спеціальних налаштуваннях.
  • Я безкоштовний і з відкритим кодом, більше не платять жодних прикладних послуг.
  • Не потрібно відкривати порт SSH (зберігайте комп'ютер)
  • Не потрібно відкривати тунелі (наприклад, VPN або щось подібне)

Я створив сценарій (протестований на моїй розп’янській ОС в Raspberry Pi), щоб ви могли легко встановити робото на Raspberry Pi, Debian або Ubuntu Box (дистрибутив пакунків Debian). це кроки, щоб отримати поле Linux для видалення:

  1. Відкрийте команду Shell Command або ви можете її назвати терміналом, перейдіть до своєї домашньої папки, завантажте сценарій інсталятора за командою:

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

  2. після цього запустіть скрипт, ввівши команду:

    $sudo ./robotito

  3. а потім ви можете редагувати файл credentials.rb з конфігураційної папки, якщо робото, використовуючи ваш обліковий запис gtalk, і зберегти його, натиснувши ctrl + x і y. За замовчуванням використовується наноредактор.

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

    $cd robotito

    $./jabbershd start

  5. Тепер, коли це зроблено, ви можете використовувати ssh від будь-якого клієнта google talk, не забудьте додати обліковий запис robotito gtalk до свого облікового запису google talk і перевірити його в чаті один з одним перед тим, як користуватися обліковим записом.


0

Ви можете просто увійти в HOST_A, а потім HOST_B за допомогою однієї команди, якщо ви отримаєте доступ від HOST_B від HOST_A:

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

-t виділить псевдотти. -А пересилає вашого агента, якщо ви використовуєте ті самі клавіші rsa для доступу до HOST_A та HOST_B.

Це простий, швидкий і брудний спосіб отримати термінал на HOST_B від клієнта.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.