Як призначити ім'я хоста для тунелю SSH


16

Я використовую ssh root@my.server.ip -g -L 4321:localhost:28017 для встановлення тунелю від мого MacBook до мого виділеного сервера у свого хостинг-провайдера. Це добре працює. Тепер я хочу отримати доступ до декількох сайтів адміністратора на віддаленому сервері (сторінка статусу MongoDB, сторінка RabbitMQ і т. Д., Всі в різних портах). Всі вони прив’язані до 127.0.0.1 на віддаленій машині. Як я можу налаштувати цю команду ssh

  • призначити ім'я для тунелю і використовувати, наприклад, "my.tunnel.name" у моєму браузері
  • мати змогу визначити віддалений порт у моєму браузері; Я хотів би підключитися до my.tunnel.name:port, щоб мати можливість викликати різні сайти

Чи можливо це за допомогою ssh? Я читав сторінки чоловіків і гуляв уже два дні, але, здається, це не працює.

--edit 2012-06-01 23: 36-- Завдяки наданим відповідям та коментарям зараз працює переадресація портів

ssh user@remote.server -D 4321

Я можу налаштувати це як проксі-сервер у своєму браузері, і браузер буде ставитись до будь-якого запиту до localhost: anyport так, ніби він був зроблений на віддаленому сервері. Використовувати ім’я зараз не потрібно, оскільки браузер призначений лише для віддалених серверів.

Відповіді:


12

Те, що ви описуєте, неможливо. Але є ще хороші новини:

Однак можливо встановити динамічний зв'язок із сервером SSH. Це відкриє порт на вашому локальному комп'ютері, на який ви можете вказати налаштування проксі вашого браузера і дозволить вам використовувати тунель як проксі-сервер. Але вам потрібно ввести ім'я хоста / ip та порт у браузер так, ніби браузер працює на машині, на якій увімкнено сервер SSH.

Команда виглядає так: ssh user@server.example.com -D 1234
Потім вкажіть на проксі браузера localhost:1234.

Отже, якщо ви тунелюєтесь до сервера A і хочете підключитися до сервера B, ви вводите у свій веб-переглядач будь-яку адресу, яку ви ввели б у браузері, що працює на сервері A. Якщо браузер, що працює на сервері A, не зміг би підключитися до сервера B (якщо процес на сервері B слухає лише на 127.0.0.1), тоді ви все одно не можете підключитися. Здається, у вас просто один сервер, але я хотів бути впевненим, що це ясно.

Якщо у вас просто один сервер, ви тунелюєтесь до нього за допомогою динамічного з'єднання, встановлюєте проксі. Потім ви зможете набрати "localhost: 1234" (наприклад) у браузер, і він підключиться до служби, що працює на віддаленому сервері на порту 1234.

Сторона Securit Примітка: Ніколи ніколи не встановлюйте сервер, на якому root може SSH! Серйозний недолік безпеки. Створіть звичайний обліковий запис користувача (кому дозволено су або sudo) та SSH в якості цього користувача.


2
Ви використовуєте -L 1234 (локальний порт вперед), коли вам слід використовувати -D 1234 (динамічний порт вперед). І, можливо, також уникайте використання -g, -g означає, що віддалені хости можуть підключитися до вашої передачі, а це не те, що ви хочете, якщо ви робите це зі своєї робочої станції.
Маттіас Анберг

Спасибі, Кріс. Я вже пробував це. Я не можу використовувати команду ssh із вказаним лише портом. Він повертає помилку: "Неправильна специфікація локальної переадресації" 1234 ""
brains_at_work

@ matthias-ahnberg: Чудово, що зробив трюк. з динамічним переадресацією я тепер можу використовувати порт як проксі-сервер і localhost: виклики someport спрямовуються на віддалений сервер.
brains_at_work

@MattiasAhnberg Нічого собі, що таке мозковий подарунок. Дякую за виправлення
Кріс Ш

Я стежив за цим процесом, але отримав помилку "Firefox" в Firefox.
rivu

23

Ви можете призначити ім'я, використовуючи той факт, що адаптер для зворотного зв'язку в основному відповість на будь-яку адресу в мережі 127.0.0.0/8.

Тож замість прив’язки до порту 4321 ви можете прив’язати до 127.1.2.3.45321. Потім просто встановіть хост-запис, який відображає ім'я до адреси циклу, для якої ви використовували foo.bar 127.1.2.3.

У моїй конфігурації SSH на моїй робочій станції адміністратора у мене багато тунелів, сконфігурованих так, що вони прив'язуються до певної адреси в діапазоні петлі, і я маю записи у своєму хостовому файлі, тому я відкриваю багато тунелів паралельно за допомогою одного і того ж порту та розрізняю їх через назва.

Тож якщо ви підключитесь так

ssh root@my.server.ip -g -L 127.1.2.3:4321:localhost:28017

І ваш файл хостів має такий рядок.

127.1.2.3 my.tunnel.name

Тоді ви зможете підключитися до my.tunnel.name:2321 з вашої локальної машини.

Якщо у вас є додатковий простір IP-адреси в мережі, до якого підключений ваш ssh-клієнт, ви можете навіть призначити вторинну адресу своєму інтерфейсу Ethernet і використовувати один із реальних IP-адрес, а потім налаштувати записи у вашій DNS, якщо ви хотіли, щоб інші системи могли мати змогу щоб використовувати ваш тунель SSH.

Опція -L -L [bind_address:]port:host:hostportдозволить вам використовувати будь-яку дійсну IP-адресу в локальній системі для прив’язки. Вам також потрібно включити цю -gопцію, якщо ви хочете, щоб інші хости могли підключитися через ваш ssh тунель.


Мені довелося додати ip's до моєї петлі в OSX. ifconfig l0 alias 127.0.1.1 255.255.255.0інакше чудова порада!
девіани

1
Якщо ви не хочете створювати оболонку, запустіть -Nв кінці команди. Таким чином простіше запам’ятати, що це тунель, а не будь-яке з'єднання SSH.
mlissner

Під час використання 127.1.2.3мені довелося це зробити на своєму macbook:, ifconfig lo0 alias 127.1.2.3 255.255.255.0який додає 127.1.2.3нову адресу в інтерфейс lo0.
Донн Лі

5

Створіть динамічну переадресацію порту на рівні додатків (в основному проксі-проксі) за допомогою тунелю SSH, а потім наведіть програми через цей. Щоб створити динамічний тунель, підключіться так:

ssh user@host.domain.com -D 127.0.0.1:31337

Потім налаштуйте свою програму для використання цього проксі-сервера SOCKSv5.

Якщо ви хочете, щоб ім'я хоста пов'язане з цим, просто додайте /etc/hostsзаписи, які вказують на 127.0.0.1, але більш гарним способом може бути додавання 127.0.0.2 для першого тунелю, а запис хостів для цього, 127.0.0.3 для другого тунель та окремий запис хоста для цього і т. д. Якщо ви додасте псевдоніми для 127.0.0.1, іноді цей псевдонім з’явиться в інших оглядах команд localhost, що може заплутати!

Щоб плавно використовувати це в веб-браузері, ви можете використовувати проксі-аддон, як приклад я віддаю перевагу веб-браузеру Chrome, а для цього я використовую аддон під назвою Proxy Switchy!. Завантажити його можна тут:
https://chrome.google.com/webstore/detail/caehdcpeofiiigpdhbabniblemipncjj

У конфігурації цього додатка я можу визначити кілька окремих проксі-серверів, а потім прив’язувати регулярні вирази хостів / URL-адрес до використання певних проксі, таким чином я завжди буду належним чином перенаправлятись через правильні тунелі без необхідності вручну перемикатися. Будь ласка, повідомте мене, якщо вам потрібні додаткові роз'яснення щодо будь-якого з кроків!


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