Как туннелировать HTTP через SSH через SOCKS?


21

Это должен быть простой вопрос, но по какой-то причине он не работает для меня.

ssh vps работает просто отлично (я использую ключи аутентификации)

Я настроил туннель с помощью команды:

ssh -C2TNv -D 8080 vps

Затем я изменяю настройки сети Firefox:

  • ручная настройка
    • http прокси: localhost, порт: 8080
    • использовать этот прокси-сервер для всех протоколов
    • SOCKS v5
  • о: конфигурации
    • network.proxy.socks_remote_dns: true

Терминальный выход:

$ ssh -C2TNv -D 8080 vps
OpenSSH_6.0p1, OpenSSL 1.0.1a 19 Apr 2012
debug1: Reading configuration data /home/ting/.ssh/config
debug1: /home/ting/.ssh/config line 47: Applying options for vps
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to vps.server.com [1.1.1.1] port 22.
debug1: Connection established.
debug1: identity file /home/ting/.ssh/id_rsa type 1
debug1: identity file /home/ting/.ssh/id_rsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.5p1 Debian-6+squeeze1
debug1: match: OpenSSH_5.5p1 Debian-6+squeeze1 pat OpenSSH_5*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.0
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 zlib@openssh.com
debug1: kex: client->server aes128-ctr hmac-md5 zlib@openssh.com
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA <removed>
debug1: Host 'vps.server.com' is known and matches the RSA host key.
debug1: Found key in /home/ting/.ssh/known_hosts:10
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/ting/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug1: Enabling compression at level 6.
debug1: Authentication succeeded (publickey).
Authenticated to vps.server.com ([1.1.1.1]:22).
debug1: Local connections to LOCALHOST:8080 forwarded to remote address socks:0
debug1: Local forwarding listening on ::1 port 8080.
debug1: channel 0: new [port listener]
debug1: Local forwarding listening on 127.0.0.1 port 8080.
debug1: channel 1: new [port listener]
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.

Затем я пытаюсь зайти на сайт, используя Firefox, вывод SSH:

debug1: Connection to port 8080 forwarding to socks port 0 requested.
debug1: channel 2: new [dynamic-tcpip]
debug1: channel 2: free: dynamic-tcpip, nchannels 3
debug1: Connection to port 8080 forwarding to socks port 0 requested.
debug1: channel 2: new [dynamic-tcpip]
debug1: channel 2: free: dynamic-tcpip, nchannels 3

Несмотря на кажущуюся работоспособность прокси, посещение любого сайта с Firefox просто возвращает сообщение об ошибке «Соединение было сброшено».


ты пробовал завиток $ curl --socks4 127.0.0.1:8080 бла
barlop

Ответы:


27

Ваша команда SSH с ключом -D подходит (так что SOCKS будет туннелировать, это просто соединение с SOCKS через HTTP, с которым вам нужно разобраться)

Я получаю хороший вывод с

curl --socks5 127.0.0.1:8080 http://blah

но я получаю тот же неправильный вывод, который вы получаете, если я делаю

 curl --proxy 127.0.0.1:8080 http://blah

Итак, Firefox подключается как HTTP-прокси

Глядя на окно Firefox

ручная настройка ДА

Вы сказали, что отметили «использовать этот прокси-сервер для всех протоколов». Это абсолютно неверный шаг! Вы хотите ввести прокси-сервер SOCKS, и если вы это сделаете, окно SOCKS будет обнулено / серым, и вы сможете ввести только прокси-сервер HTTP.

Так что не делайте этого.

И делай, вводи прокси ip носки.

и удалите, где он говорит, что нет прокси для 127.0.0.1, localhost. если это говорит о том, что по умолчанию.


14
Спасибо за ответ. Однако я получил это работает на убирая все в прокси экране конфигурации Firefox, за исключением того, в SOCKS Hostполе. Если я добавил что-нибудь в HTTP Proxyполе, оно перестало работать.
В

@ wting или @barlop, я не могу попросить описание флагов ssh, -C2TNне так ли?
Майк HR

1
@ MikeH-R Я не очень знаком с этим, но он сломается до -C2 -T -N -v. Глядя на man ssh, похоже, что -C2 относится к сжатию, -C выполняет сжатие и упоминает включение уровня, например. -C2, что он сделал. -T или -N или оба -T и -N относятся к упрощению ssh в том смысле, что обычно, когда вы используете ssh даже с переадресацией портов, он открывает приглашение cmd, и у вас есть оболочка, поэтому то, что он там делал, останавливается это произошло, поэтому у него просто есть функция переадресации портов, которую он хочет без оболочки. и -v многословен. (хотя, если вы хотите многословный -vvv, т.е. 3 из них лучше)
barlop

Спасибо @barlop, вы немного очистили его от документов, очень ценим.
Майк HR

@ MikeH-R нет проблем, мне было интересно, что же это было, хотя в то время не проверял! Мне все еще было любопытно, когда я посмотрел это сейчас!
Бароп

1

Для проверки соединения с помощью curl вы также можете использовать флаги -I -v(чтобы получить только заголовки HTTP и сделать вывод более разговорчивым).

Если эти флаги выбраны и скручиваемое соединение - вы увидите в выходной строке:

* Rebuilt URL to: http://www.google.ru/
*   Trying ::1...
* 87
* 245
* 198
* 44
* Connected to localhost (::1) port 8080 (#0)

Если не удается установить соединение:

* Rebuilt URL to: http://www.google.ru/
*   Trying ::1...
* connect to ::1 port 8080 failed: Connection refused

На вкладке другого терминала с ssh-соединением вы увидите что-то вроде этого:

debug1: channel 2: new [dynamic-tcpip]
debug1: channel 2: free: direct-tcpip: listening port 9999 for 87.245.198.44 port 80, connect from ::1 port 55034 to ::1 port 8080, nchannels 3
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.