Подтвердить что ты не робот

Может кто-нибудь объяснить SSH туннель простым способом?

Хотя я использую некоторый псевдоним для туннеля 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 в db.mycompany.com, но foo может, как сделать возможным доступ к db.mycompany.com, также используя туннель ssh.

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

4b9b3361

Ответ 1

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

но для этого вам также понадобится этот параметр для foo sshd_config

 GatewayPorts yes

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

ssh -D 8888 foo.company.com

затем перейдите к настройкам соединения с браузером и включите прокси-соединение, выберите socks4/5 и host: 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 и фактически получить доступ к db: 3306.

Ответ 2

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

Ответ 3

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

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

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

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

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

ssh -D 8080 [email protected]

Ответ 4

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

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

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

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

Допустим, у вас есть межсетевой экран между вами и сервером. Сервер может получить доступ к другому серверу (server2) в своей внутренней сети.

[client]--------||------[server]----[sever2]

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

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

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

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

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

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

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

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

Ответ 6

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

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