Могу ли я создать SSH для туннелирования HTTP через сервер, как если бы он был прокси?

33

Скажи, что у меня есть serverи client. Мне нужно создать соединение с clientк websiteчерез serverкак это прокси.

Можно ли это сделать с помощью SSH-туннеля или мне нужно установить какой-нибудь прокси-сервер на server?

Якуб Арнольд
источник

Ответы:

43

Вы можете сделать это с помощью SSH

ssh -L 80:remotehost:80 user@myserver

Тогда у вас будет туннель от локального порта 80 до порта 80 удаленного хоста. Это не должно совпадать с myserver. Чтобы сделать это прозрачным, вы должны добавить запись в файл hosts. Если вы этого не сделаете, vhosts не будет работать. Если вы хотите соединение через SOCKS-прокси, вы также можете использовать

ssh -D 5000 user@myserver

Это создаст SOCKS-прокси на локальном порту 5000, который направляет все запросы через myserver.

Wienczny
источник
2
Если вам нужно, чтобы этот туннель был доступен клиентам вне вашей коробки, добавьте опцию -g.
г-н-евро
1
Команда, как написано, не работает для меня. Мне пришлось заменить удаленный хост на loopback, как это: ssh -L 80: 127.0.0.1: 80 user @ myserver
eficker
Было бы более полезно, если бы удаленный порт отличался от локального, ssh -L 81:remotehost:80 user@myserverлокальный порт 81 взаимодействует так, как если бы он был 80 на удаленном.
Рафарино
1
Если вы хотите добавить прокси SOCKS через ваш ~ / .ssh / config, используйте:Host myserver User user DynamicForward 5000
bonh
15

Да, это возможно.

Запустите ssh -D port user@hostи настройте клиент для использования вашего ящика в качестве SOCKS-прокси.

Если вам нужен именно HTTP-прокси, вы можете использовать Proxychains и направить его через предыдущие SOCKS.

MR-евро
источник
5

Замазка делает это очень хорошо тоже.

Под SSH, goto Tunnels. Внизу поместите 8080 в порт, а для пункта назначения оставьте его черным и выберите переключатель «Динамический». Вот и все, что вам нужно сделать, теперь подключиться к серверу с помощью Putty.

После подключения на локальном хосте у вас работает прокси-сервер с портом 8080, который будет передавать все запросы через ваш сервер.

Теперь используйте веб-браузер и настройте прокси, установив host = localhost и port = 8080, и убедитесь, что вы выбрали SOCKS прокси. Я делаю это все время, поэтому, если вы используете Firefox, обязательно установите плагин FoxyProxy, поскольку он делает включение / отключение прокси одним щелчком мыши.

Внимание: имейте в виду, что по умолчанию ваши DNS-запросы не передаются через прокси. Таким образом, веб-сайт, который вы посещаете через прокси-сервер, все равно будет зарегистрирован (если они регистрируют этот материал). Вы также можете настроить Firefox на DNS-запросы прокси, он просто не делает этого по умолчанию.

Дж Сидху
источник
5

sshuttle работает как VPN, но через SSH.

Прозрачный прокси-сервер, который работает как VPN для бедного человека. Нападающие над ssh. Не требует администратора. Работает с Linux и MacOS. Поддерживает DNS-туннелирование.

https://github.com/sshuttle/sshuttle

Каспер Граббе
источник
2

Чтобы разрешить прокси-серверу запускать компьютер и разрешить другим клиентам подключаться к вам, потребуется опция -g. Например, вы должны запустить это на сервере с именем foo:

ssh -g -ND 9191 root@remotehost

Затем вы можете установить прокси в браузере клиента, чтобы использовать сервер foo и порт 9191 для SOCKS прокси. Клиенты будут отправлять свои запросы слишком foo, которые, в свою очередь, перенаправят запрос через ssh на удаленный хост. Так что в интернете будет похоже, что они используют remotehost.

Если вы также хотите пересылать DNS-запросы с помощью firefox, отредактируйте about: config в firefox и установите для network.proxy.socks_remote_dns значение true.

Кайл Брандт
источник