Як тунелювати HTTP через SSH через SOCKS?


21

Це має бути простою проблемою для вирішення, але чомусь це не працює для мене.

ssh vps працює чудово (я використовую ключі аутентифікації)

Я налаштував тунель командою:

ssh -C2TNv -D 8080 vps

Потім я змінюю налаштування мережі Firefox:

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

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

$ 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 просто повертається з помилкою "З'єднання було скинуто".


ви спробували завитись. $ Локон --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

@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, ви трохи очистили його від документів, високо оцінили.
Майк 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.