วิธีขุด HTTP ผ่าน SSH ผ่าน SOCKS ทำอย่างไร


21

นี่ควรเป็นปัญหาง่าย ๆ ในการแก้ไข แต่ด้วยเหตุผลบางอย่างมันไม่ทำงานสำหรับฉัน

ssh vps ทำงานได้ดี (ฉันใช้คีย์การตรวจสอบสิทธิ์)

ฉันตั้งค่าอุโมงค์ด้วยคำสั่ง:

ssh -C2TNv -D 8080 vps

ฉันจะแก้ไขการตั้งค่าเครือข่าย Firefox:

  • กำหนดค่าด้วยตนเอง
    • http proxy: localhost, พอร์ต: 8080
    • ใช้พร็อกซีเซิร์ฟเวอร์นี้สำหรับโปรโตคอลทั้งหมด
    • SOCKS v5
  • เกี่ยวกับ config
    • 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 output:

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 blah
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 Proxy

มองไปที่หน้าต่าง Firefox

กำหนดค่าด้วยตนเองใช่

คุณบอกว่าคุณทำเครื่องหมายว่า "ใช้พร็อกซีเซิร์ฟเวอร์นี้สำหรับโปรโตคอลทั้งหมด" นั่นเป็นการย้ายที่ผิดทั้งหมด! คุณต้องการป้อนพร็อกซี SOCKS และหากคุณทำเช่นนั้นกล่อง SOCKS จะเป็นโมฆะ / เป็นสีเทาและคุณสามารถป้อน HTTP Proxy เท่านั้น

ดังนั้นอย่าทำเครื่องหมายที่

และทำเช่นนั้นป้อน ip proxy proxy

และลบตำแหน่งที่ระบุว่าไม่มีพร็อกซีสำหรับ 127.0.0.1, localhost ถ้ามันบอกว่าซึ่งเป็นค่าเริ่มต้น


14
ขอบคุณสำหรับคำตอบ. อย่างไรก็ตามผมได้รับมันทำงานโดยการล้างออกทุกอย่างในหน้าจอการตั้งค่าพร็อกซี่ของ Firefox ยกเว้นSOCKS Hostฟิลด์ ถ้าฉันเพิ่มอะไรลงในHTTP Proxyฟิลด์มันก็หยุดทำงาน
ปิด

@wting หรือ @barlop ฉันไม่สามารถขอรายละเอียดของการตั้งค่าสถานะ ssh -C2TNได้หรือไม่
Mike HR

1
@ MikeH-R ฉันไม่คุ้นเคย แต่ก็แยกย่อยเป็น -C2 -T -N -v เมื่อมองไปที่ man ssh ดูเหมือนว่า -C2 จะทำอย่างไรกับการบีบอัด -C ทำการบีบอัดและกล่าวถึงการรวมระดับเช่น -C2 ซึ่งเขาทำ -T หรือ -N หรือทั้งสองอย่าง -T และ -N จะทำอย่างไรกับการทำให้ ssh ง่ายขึ้นในแง่ที่ว่าโดยปกติเมื่อคุณ ssh แม้จะมีการส่งต่อพอร์ตมันจะเปิดพร้อมท์ cmd และคุณมีเชลล์ดังนั้นสิ่งที่เขาทำ สิ่งนั้นเกิดขึ้นดังนั้นเขาจึงมีคุณสมบัติการส่งต่อพอร์ตที่เขาต้องการโดยไม่มีเชลล์ และ -v เป็น verbose ( แต่ถ้าคุณต้องการ verbose -vvv เช่น 3 ของพวกเขาจะดีกว่า)
barlop

ขอบคุณ @barlop คุณช่วยเคลียร์เอกสารได้เล็กน้อยขอบคุณมาก
Mike HR

@ MikeH-R ไม่มีปัญหาฉันสงสัยในขณะที่สิ่งที่เกินไป แต่ไม่ได้ตรวจสอบในเวลา! ฉันยังอยากรู้อยากเห็นเมื่อฉันมองมันตอนนี้!
barlop

1

ในการตรวจสอบการเชื่อมต่อผ่านทางขดคุณอาจใช้ค่าสถานะ-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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.