Що таке зворотне тунелювання SSH? (і як його використовувати)

Що таке зворотне тунелювання SSH? (і як його використовувати)

Потрібно SSH до недоступного комп'ютера Linux? Нехай вам подзвонять, а потім перервіть це з'єднання, щоб отримати свій власний віддалений сеанс SSH. Ми покажемо вам, як.

Якщо ви захочете використовувати зворотне тунелювання SSH

Іноді віддалені комп'ютери можуть бути важко доступні. Сайт, на якому вони розташовані, може мати жорсткі правила брандмауера або, можливо, локальний адміністратор встановив складні правила трансляції мережевих адрес. Як дістатися до такого комп'ютера, якщо вам потрібно підключитися до нього?

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

Щоб розрізняти локальні та віддалені комп'ютери, які використовуються в цій статті, віддалений комп'ютер називається "" "і працює під керуванням Ubuntu Linux (з фіолетовими вікнами термінала). Локальний комп'ютер називається «Sulaco» і працює під управлінням Manjaro Linux (з жовтими віконними вікнами).

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

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

Відповідь полягає у зворотному тунелюванні SSH.

Що таке зворотне тунелювання SSH?

Зворотне тунелювання SSH дозволяє використовувати це встановлене з'єднання для встановлення нового з'єднання з локального комп'ютера назад на віддалений комп'ютер.


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

І ось ми приходимо до назви «зворотне тунелювання SSH».

Як це працює?

Зворотне тунелювання SSH використовує віддалений комп'ютер, який використовує встановлене з'єднання, для прослуховування нових запитів на з'єднання від локального комп'ютера.

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

Це простіше налаштувати, ніж описати.

Використання SSH зворотного тунелювання

SSH вже буде встановлено на вашому комп'ютері з Linux, але вам може знадобитися запустити фонову службу SSH (sshd), якщо локальний комп'ютер ніколи раніше не приймав з'єднання SSH.

sudo systemctl start sshd


Щоб фонова служба SSH запускалася при кожному перезавантаженні комп "ютера, скористайтеся цією командою:

sudo systemctl ввімкнути sshd

На віддаленому комп'ютері ми використовуємо наступну команду.

  • Параметр -R (reverse) повідомляє ssh, що на віддаленому комп "ютері слід створити нові сеанси SSH.
  • «43022: localhost: 22 "повідомляє ssh що запити на підключення до порту 43022 на локальному комп'ютері повинні бути перенаправлені на порт 22 на віддаленому комп'ютері. Порт 43022 був обраний, оскільки він вказаний як нерозподілений. Це не спеціальний номер.
  • dave @ sulaco.local - це обліковий запис користувача, до якого буде підключатися віддалений комп'ютер на локальному комп'ютері.

SSH-R 43022: локальний вузол: 22 Ця електронна адреса захищена від спам-ботів. Вам необхідно увімкнути JavaScript, щоб побачити її.

Ви можете отримати попередження про те, що ніколи раніше не з'єднувалися до локального комп'ютера. Або ви можете побачити попередження при додаванні відомостей про з "єднання до списку розпізнаних вузлів SSH. Те, що ви бачите - якщо щось залежить від того, чи були коли-небудь встановлені з'єднання з віддаленого комп'ютера на локальний комп'ютер.


Вам буде запропоновано ввести пароль облікового запису, який ви використовуєте для з'єднання з локальним комп'ютером.

Зауважте, що після встановлення зв "язку командний рядок буде змінено з dave @ на dave @ sulaco.

Тепер ми підключені до локального комп'ютера з віддаленого комп'ютера. Це означає, що ми можемо давати йому команди. Давайте використовувати команду who щоб побачити логіни на локальному комп'ютері.

хто

Ми бачимо, що людина з обліковим записом користувача з ім'ям dave увійшла в систему на локальному комп'ютері, а віддалений комп'ютер підключився (використовуючи ті ж облікові дані користувача) з IP-адреси 192.168.4.25.


З'єднання з віддаленим комп'ютером

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

Віддалений комп'ютер прослуховує порт 43022 на локальному комп'ютері. Тому, дещо нелогічно, щоб встановити з'єднання з віддаленим комп'ютером, ми просимо ssh встановити з'єднання з локальним комп'ютером через порт 43022. Цей запит на з «єднання буде переспрямовано на віддалений комп» ютер.

ssh localhost -p 43022

Нам пропонується ввести пароль облікового запису користувача, а потім підключитися до віддаленого комп'ютера з локального комп'ютера. Наш комп'ютер Manjaro радісно каже: «Ласкаво просимо в Ubuntu 18.04.2 LTS».

Зауважте, що командний рядок змінився з dave @ sulaco на dave @. Ми досягли нашої мети - встановити SSH-з'єднання з нашим важкодоступним віддаленим комп'ютером.


Використання SSH з ключами

Щоб було зручніше підключатися з віддаленого комп'ютера до локального комп'ютера, ми можемо налаштувати ключі SSH.

Введіть наступну команду на віддаленому комп "ютері:

SSH-серійник

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

Три або чотири слова, розділені символами, складуть надійну фразу-пароль.

Ваші ключі SSH будуть створені.

Нам потрібно перенести відкритий ключ на локальний комп'ютер. Використовуйте цю команду:

ssh-copy-id Ця електронна адреса захищена від спам-ботів. Вам необхідно увімкнути JavaScript, щоб побачити її.

Вам буде запропоновано ввести пароль для облікового запису користувача, до якого ви входите, в цьому випадку, dave @ sulaco.local.

Коли ви вперше виконуєте запит на з "єднання з віддаленого комп" ютера на локальний комп "ютер, вам слід буде вказати ключову фразу. Вам не потрібно буде вводити його знову для майбутніх запитів на з'єднання, поки це вікно термінала залишається відкритим.

Не всі тунелі страшні

Деякі тунелі можуть бути темними і звивистими, але зворотне тунелювання SSH не дуже складно для навігації, якщо ви можете тримати зв'язок між віддаленим комп'ютером і локальним комп'ютером прямо в голові. Тоді переверни це.