Туннелирование SSH, объясненное в терминах неспециалиста

[1120602]Поисковые запросы - это функции perl regex. GNU grep реализует их (с опцией [1120963]-P[1120964]). Я не могу сказать, делает ли это какая-либо команда busybox.[1284]В данном случае, однако, вы просто ищете работу после "on". Выберите одну из[1285]
1
13.04.2017, 15:36
2 ответа

Обзор очень высокого уровня:

  1. Опция -D говорит ssh прослушивать соединения на этом порту с помощью протокола SOCKS. Вы настраиваете Firefox на соединение с ssh и говорите по протоколу SOCKS.

  2. Введите http://www.google.com в браузере.

  3. Firefox подключается к этому порту SOCKS. SOCKS может делать кучу вещей, но нас интересует вот это: Firefox спрашивает SOCKS сервер (ssh) "эй, не могли бы вы поговорить с www.google.com, и дать ему этот HTTP запрос? И скажите мне (Firefox), что www.google.com говорит в ответ на это?". (Firefox не знает и не заботится о том, чтобы ssh пересылал этот запрос через SSH туннель)

  4. ssh пересылает этот запрос по ssh соединению на что-то, запущенное на удаленной машине (возможно sshd)

  5. программа, запущенная на удаленной машине, делает соединение, посылает данные в Google и получает ответ обратно.

  6. программа на удаленной машине, в ответ на запрос, сообщает ssh на вашей машине, что это за ответ.

  7. ssh на вашей машине, в ответ на запрос, сообщает Firefox, что это такое, и что это за ответ.

  8. Firefox знает свою веб-страницу, поэтому начинает работать над ее отображением.

  9. Повторяйте много раз, для всех изображений, JavaScript, CSS и т.д.

4
27.01.2020, 23:12

Когда вы посещаете веб-сайт (тот, который не заблокирован корпоративным брандмауэром), ваш браузер отправляет запрос на сервер, указанный в URL-адресе, через порт 80 (по умолчанию). Например, чтобы посетить этот сайт, наши браузеры связываются с портом 80 сервера unix.stackexchange.com

. Когда вы устанавливаете настройки прокси-сервера, вы указываете своему браузеру отправлять все на localhost порт 7070 независимо от URL-адреса. Прокси-сервер предназначен для простой выборки данных от имени клиента. Доступны различные прокси-серверы (быстрый поиск в репозитории вашего disto покажет несколько - squid - это один, и веб-серверы apache и nginx также могут работать в качестве прокси), но установка одного из них не поможет вашему сценарию, поскольку прокси будет пытаться получить доступ к веб-сайту от вашего имени и по-прежнему будет заблокирован вашим корпоративным брандмауэром.

Однако ssh с параметром -D в сочетании с демоном sshd на удаленном сайте ( yourserver.com ) действует как прокси-сервер, за исключением того, что этот разделен на две половины - локальный ssh и удаленный sshd .

Запрос вашего браузера для http://unix.stackexchange.com отправляется клиенту ssh на вашем компьютере, который прослушивает порт 7070 ]. Это зашифровывает запрос и отправляет его на удаленный sshd сервер. Это расшифровывает запрос и отправляет его на соответствующий сервер (снова unix.stackexchange.com , порт 80) с обратным путем (IP-адрес и порт, на который сервер должен возвращать свой ответ), измененный так, чтобы соответствовать пути сервера sshd ( yourserver.com ]).

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

ssh действует как распределенный прокси. «Туннелирование» здесь заключается в том, что прокси-сервер состоит из двух половин, и они разговаривают друг с другом через зашифрованный туннель, который никто не может отслеживать, и (в вашем случае) использует порт, который не заблокирован вашим брандмауэром (порт 22 ).

4
27.01.2020, 23:12

Теги

Похожие вопросы