Может кто-нибудь объяснить SSH туннель простым способом? - PullRequest
48 голосов
/ 12 марта 2011

Хотя я использую какой-то псевдоним для создания ssh туннеля или обратного туннеля, я никогда не понимаю, как это работает. Кто-нибудь знает, как объяснить это очень просто?

Я думаю, что 3 основных применения:

Во-первых, я могу использовать свой домашний компьютер для ssh до foo.mycompany.com, не используя пароль (foo сервер на работе)

1) Как заставить foo.mycompany.com:8080 перейти на мой домашний компьютер localhost:3000?

2) Если дома я не могу получить доступ к http://bar.mycompany.com, но foo может получить доступ к bar, как сделать, чтобы домашний компьютер мог получить доступ к http://bar.mycompany.com?

3) Если я дома, я не могу получить доступ к базе данных MySQL на db.mycompany.com, но foo может, как сделать возможным доступ к db.mycompany.com также с использованием туннеля ssh.

Это можно объяснить очень простыми словами? Есть ли на самом деле какое-то другое популярное использование помимо этих 3? спасибо.

Ответы [ 5 ]

49 голосов
/ 12 марта 2011

1) Если вы подключаетесь из дома к foo, вам нужен обратный туннель (-R)

ssh -R 8080:localhost:3000 foo.mycompany.com

Это позволит процессам, запущенным на foo, подключаться к localhost:8080 и фактически говорить с вашим домом.компьютер на порту 3000. Если вы хотите, чтобы другие компьютеры на вашей работе могли подключаться к foo: 8080 и получать доступ к вашему домашнему компьютеру через порт 3000, то вам нужно

ssh -R 0.0.0.0:8080:localhost:3000 foo.mycompany.com

, но для того, чтобы это работало, вы такженужна эта опция для sshd_config foo

 GatewayPorts yes

2) Лучший способ создать http-прокси с ssh - использовать socks.Сначала подключитесь с помощью

ssh -D 8888 foo.company.com

, затем перейдите в настройки подключения вашего браузера и включите прокси-подключение, выберите socks4 / 5 и хост: localhost, порт 8888. Затем просто введите http://bar.mycompany.com в адресной строке браузера.

3) Теперь вам нужен локальный порт переадресации (-L).

ssh -L 3333:db.mycompany.com:3306 foo.mycompany.com

Это означает, что вы сможете подключиться к localhost:3333 со своего домашнего компьютера, и все будет перенаправлено наdb.mycompany.com:3306 как если бы соединение было установлено foo.mycompany.com.Host db будет видеть foo в качестве подключающегося клиента, поэтому вам необходимо войти в систему с тем же именем пользователя и паролем, которые вы используете при работе с foo.

Добавление флага -g позволит другим компьютерам из вашей домашней сети подключаться к вашемупорт компьютера 3333 и фактически доступ к базе данных: 3306.

4 голосов
/ 12 марта 2011

SSH туннелирование очень просто. Он открывает гнездо для прослушивания на одном конце. Всякий раз, когда кто-либо подключается к этому прослушивающему сокету, он открывает соответствующее соединение с другого конца к сконфигурированному местоположению, а затем пересылает всю информацию в обоих направлениях между ними по каналу SSH.

2 голосов
/ 07 ноября 2014

Прежде всего я объясню SSH:

SSH - это оболочка для удаленного входа, которая позволяет подключать удаленные компьютеры с использованием зашифрованного соединения. Поэтому, как только вы установили ssh-соединение с любым удаленным хостом, соединение между хостами защищено и зашифровано.

Туннелирование SSH направляет ваш трафик через безопасное соединение SSH.

Проще говоря, SSH туннелирование - это не что иное, как одно соединение, инкапсулированное другим соединением. Используя это как преимущество, мы создаем туннели с помощью клиента SSH.

Следующая команда поможет вам создать простой прокси socks

ssh -D 8080 user@sshserverip
1 голос
/ 26 сентября 2018

Довольно старый вопрос, но посмотрите, поможет ли эта страница вам это объяснить, там есть красивые картинки и все такое.:)

https://www.ssh.com/ssh/tunneling/

По сути, SSH Tunnel - это туннель, который может использоваться для передачи (туннелирования) данных из одного места в другое в зашифрованном виде.

Он также обычно используется для маршрутизации трафика (через туннель, думаю, червоточина) в другое место, что позволяет выполнять такие вещи, как туннелирование через брандмауэр или перенаправлять трафик (переадресация зашифрованных портов).

* 1009Допустим, у вас есть межсетевой экран между вами и сервером.Сервер может обращаться к другому серверу (server2) во внутренней сети.
[client]--------||------[server]----[sever2]

Допустим, вы хотите получить доступ к веб-серверу на server2 , и по понятным причинам вы не можете сделать это.это напрямую.Допустим, порт 22 (ssh) открыт на брандмауэре.Итак, мы бы создали SSH-туннель (на сервер ) от сервер до сервер2 .Это будет означать, что любой (исходящий?) Трафик через порт 22 будет передаваться через этот туннель с сервера: 22 -> server2: 80 .

[client]--------||------[server:22]======[sever2:80]

Итак (как япоймите это), если мы подключаемся к серверу: 22 * ​​1029 *, он должен перенаправить трафик с порта 22 на веб-сервер на server2:80 с использованием этого нового туннеля SSH.(Насколько я понимаю, данные зашифрованы только в туннеле, поэтому конец будет расшифрован данными, если вам интересно, если сервер: 80 должен быть SSL).

Я полагаю, в одномчто использование SSH само по себе является туннелем SSH для вашей старой telnet связи.Просто в большинстве случаев, когда вы слышите о SSH Tunneling, люди обращаются к (безопасной) функции переадресации портов, которую он предлагает, без необходимости иметь доступ к администратору брандмауэра, который является изящной маленькой функцией, которую многие хакеры любят использоватьобойти безопасность.

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

Надеюсь, это поможет.

РЕДАКТИРОВАТЬ

Обнаружено это в UNIX SO https://unix.stackexchange.com/questions/46235/how-does-reverse-ssh-tunneling-work, множество ответов с очень четкими (и наглядными) объяснениямичто тебе нужно!

0 голосов
/ 12 марта 2011

Прочтите справочную страницу, в частности опции -L, -R и -D.Я не думаю, что кто-то переписывает это и, возможно, вводит ошибки, полезно.Если вы этого не понимаете, вы можете задать более конкретные вопросы.

-D предоставляет прокси SOCKS, что является еще одним полезным приложением туннелирования ssh.

...