Вперед SSH через тунель SSH


30

Моя ситуація:

Я (localhost) -> Сервер A (ip: 100.100.100.100) => (сервер B (ip: 192.168.25.100), сервер ....)

Я в змозі SSH на сервер, оскільки він має справжній ip, якщо я тоді хочу підключитися до сервера b, я б ssh сервер b з його ip (192.168.25.100)

приклад:

з мого ПК:

ssh user@100.100.100.100

то в 100.100.100.100,

ssh user@192.168.25.100

це призвело б мене до сервера B з ssh

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

приклад:

від мого oc:

ssh@192.168.25.100

я спробував таке:

ssh -L 22:localhost:22 user@100.100.100.100

без успіху

Відповіді:


30

Ваша проблема полягає в прив’язанні слухача до localhost: 22; на цьому вже є sshd прослуховування. Тунелювання ssh-з'єднання через ssh-з'єднання є повністю законним, і я це роблю постійно, але вам потрібно вибрати невикористані порти для своїх слухачів переадресації.

Спробуйте

me% ssh user@100.100.100.100 -L 2201:192.168.25.100:22

потім

me% ssh localhost -p 2201

Ви повинні опинитися на сервері B (якщо щось мені вже не прив’язано: 2201; в такому випадку виберіть інший порт).


дякую за швидку відповідь! він працює, однак, як я можу переслати всі з'єднання замість лише ssh (22)?
tom91136

1
Це повноцінна VPN, яку ви шукаєте, а не лише переадресація порту. Існує запис про те, як зробити vpn-over-ssh на bodhizazen.net/Tutorials/VPN-Over-SSH , але він вимагає віддаленого кореневого доступу через ssh на A. Або ви можете заглянути в OpenVPN або інші рішення VPN, але знову ж таки, вам потрібна пільга на A, щоб зробити ці роботи.
MadHatter підтримує Моніку

велике спасибі, і останнє, що робити, якщо я хочу лише підключитися до A?
tom91136

me% ssh user@100.100.100.100; хіба ми вже не покривали це? або ти маєш на увазі "що робити, якщо я хочу повномасштабного VPN до A?", і тоді моя відповідь стоїть.
MadHatter підтримує Моніку

1
Люди, які хочуть VPN через SSH, не мають кореневого доступу до сервера, але у нього є Python, спробуйте sshuttle .
Андре Парамеш

23

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

ssh -t user@100.100.100.100 ssh user@192.168.25.100

В -tопції сили SSH виділити псевдо-термінал , так що ви можете запустити інтерактивну команду.

Це може працювати і з ключами ssh. Якщо у вас є приватний і відкритий ключ на машині A і ваш відкритий ключ у файлах дозволених ключів на машинах B і C, ви можете використовувати -Aопцію для пересилання підключення агента аутентифікації.


10

Я використовував інше рішення. Я використовував ProxyCommandваріант (тут у ~/.ssh/config):

Host myinsidehost1 myinsidehost2 myinsidehost3
ProxyCommand ssh externalhost ssh %h sshd -i

При цьому не встановлюється жоден тунель "порт-порт", а тунелі "ssh" використовуються стандартний stdin / out. Цей метод має недолік, що насправді є три ssh-з'єднання для аутентифікації. Але для підключення до внутрішнього хоста просто введіть:

ssh myinsidehost2

... тож вам не потрібно дбати про вибір будь-якої IP для цього тунелю.


1
Це єдиний вид укладання SSH, який я вважаю працюючим. Мене судили corkscrewабо nc( netcat), але жоден не працює так легко, як це.
Пхуонг Нгуєн

7

відповідно до сторінки ssh man, ProxyCommand - це правильний метод

синтаксис:

ProxyCommand ssh -W %h:%p user@jumphost 2> /dev/null

Я не впевнений, що -Wіснував варіант, коли відповіли на це питання. Але з новішими версіями клієнта ssh я згоден, що комбінація ProxyCommandі -Wє кращим методом. Можливо, додайте якийсь контекст, який показує, як його можна використовувати в командному рядку, а також приклад розділу для .ssh/config.
kasperd

Будь-яка ідея, де знайти відомості про зміни / інформацію про версію, яка розповідає, які версії SSH мають -Wкоманду, а які ні? Трохи гуглінг не дав мені відповідей швидко ...
dmh

-Wпознайомився з OpenSSH 5.4, випущений у 2010 році. Отже, відповідь - так @kasperd
0xC0000022L

7

Станом на OpenSSH 7.3 (кінець 2016 року) найпростішим способом є налаштування ProxyJump . У вашому ~/.ssh/config:

Host B
  ProxyJump A

Або в командному рядку,, -J B.

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