ฉันจะใช้ SSH กับพร็อกซี SOCKS 5 ได้อย่างไร


35

ฉันมีพร็อกซี SOCKS5 ตั้งค่าผ่าน PuTTY ด้วยพอร์ต 7777 ที่กำหนดค่าเป็นพอร์ตแบบไดนามิก ฉันสามารถใช้ Firefox / filezilla / etc โดยการกำหนดค่าให้ใช้พร็อกซี่ถุงเท้าด้วยและพอร์ตlocalhost 7777แต่ฉันไม่สามารถหาวิธี ssh (ผ่าน Cygwin) ไปยังเซิร์ฟเวอร์ระยะไกลโดยใช้พอร์ตแบบไดนามิก เป็นไปได้ไหม

ฉันลองใช้ProxyCommandด้วยวิธีต่อไปนี้

  1. สร้าง~/.ssh/configด้วยบรรทัดต่อไปนี้:

    ProxyCommand /usr/bin/nc -X connect -x 127.0.0.1:7777 %h %p
    
  2. รัน ssh -p22 user @ remotehost

ข้อความที่ฉันได้รับคือ ssh_exchange_identification: Connection closed by remote host


1
ในการทำให้โปรแกรมที่ไม่รองรับ SOCKS ต้องผ่าน SOCKS คุณสามารถใช้พร็อกซีที่เรียกว่า; ดูen.wikipedia.org/wiki/Comparison_of_proxifiers โดยเฉพาะอย่างยิ่งฉันแนะนำ proxifer tun2socks โอเพนซอร์สของฉัน ( code.google.com/p/badvpn/wiki/tun2socks )
Ambroz Bizjak

ขอบคุณสำหรับความคิดเห็น Ambroz ฉันต้องการมันเพื่อทำงานใน cygwin และฉันเห็นจากหน้าวิกิพีเดียใน proxifiers ว่าทุกสิ่งที่มันกล่าวถึงไม่ได้นำมาใช้ใน cygwin หรือไม่สามารถใช้งานได้ มีวิธีการให้ proxifier ทำงานใน cygwin หรือไม่?

คุณไม่จำเป็นต้องใช้เพื่อสนับสนุน Cygwin โดยเฉพาะ โปรแกรม Cygwin อยู่ในท้ายที่สุดเพียงแค่โปรแกรม Windows แต่ด้วยอินเตอร์เฟส POSIX ที่ใช้เป็นห้องสมุด หาก proxifier ใช้งานได้บน Windows มันควรจะสามารถ proxify โปรแกรม Cygwin ได้ดี
Ambroz Bizjak

คำตอบ:


31

คุณกำลังใช้ 'เชื่อมต่อ' สำหรับ HTTPS เป็นเวอร์ชันพร็อกซีของคุณซึ่งมาจาก man nc:

-X proxy_version คำร้องขอที่ nc ควรใช้โปรโตคอลที่ระบุเมื่อพูดคุยกับพร็อกซีเซิร์ฟเวอร์ โปรโตคอลที่รองรับคือ '' 4 '' (SOCKS v.4), '' 5 '' (SOCKS v.5) และ 'เชื่อมต่อ' (HTTPS proxy) หากไม่ได้ระบุโปรโตคอลจะใช้ SOCKS เวอร์ชัน 5

ดังนั้นคุณควรใช้สิ่งต่อไปนี้เพื่อใช้ SOCKS 5:

ProxyCommand /usr/bin/nc -X 5 -x 127.0.0.1:7777 %h %p

หรือเพียงแค่:

ProxyCommand /usr/bin/nc -x 127.0.0.1:7777 %h %p

ฉันหวังว่ามันจะช่วย


ขอบคุณสมานที่ใช้งานได้! นอกจากนี้ขอขอบคุณสำหรับคำอธิบายช่วยได้

ProxyCommandต้องเป็นบรรทัดแรกของคุณ~/.ssh/config', or else nested inside a specify ส่วน Host` ไม่แน่ใจจริงๆว่าทำไม มันไม่ทำงานหากเป็นบรรทัดสุดท้ายใน~/.ssh/config
Aaron McDaid

@AaronMcDaid: จากman ssh_config: "สำหรับแต่ละพารามิเตอร์ระบบจะใช้ค่าที่ได้รับแรก" ดังนั้น ... การตั้งค่าทั่วโลกจำเป็นต้องอยู่ก่อนHostส่วนใด ๆ บรรทัดสุดท้ายของ~/.ssh/configเป็นส่วนหนึ่งของHostส่วนสุดท้าย
mpb

เป็นมูลค่าการกล่าวขวัญว่า netcat อยู่ใน/bin/ncDebian และ Ubuntu
ต่อ Lundberg

11
ssh -o ProxyCommand='nc --proxy-type socks4 --proxy 127.0.0.1:9050 %h %p' user@host

fc19 x86_64, Ncat: เวอร์ชัน 6.25


เพียงแค่อยากรู้อยากเห็น - ทำไมproxy-type socks4?
สงสัย

2
คุณช่วยเพิ่มคำอธิบายเพิ่มเติมลงไปในสิ่งนี้เพื่อบอกว่าทำไมมันถึงได้ผล
ChrisF

1
@ChrisF มันเป็นเช่นเดียวกับวิธีการแก้ปัญหาที่ยอมรับ แต่มันเป็นหนึ่งซับ! ไม่จำเป็นต้องแก้ไขไฟล์ปรับแต่งใด ๆ
j123b567

1
นี่คือโปรแกรมnmap ncat (มาผ่านทางapt install nmapระบบ APT เช่น Ubuntu และ Debian) ซึ่งแตกต่างจากnetcat (ไม่ว่าจะเป็น netcat-openbsd หรือ netcat ดั้งเดิมของ Hobbit)
Adam Katz

1
@suspectus เกี่ยวข้องกับ @Adam Katz ความคิดเห็นproxy-typeเป็นsocks4เพราะncatโปรแกรมnmap ไม่รองรับ sock5 จนกระทั่งเมื่อไม่นานมานี้ แน่นอนนี่เป็นปัญหาแม้ในขณะนี้ (พ.ย. 2017) เนื่องจาก RHEL 7 / Centos 7 เปลี่ยนเป็นแพ็คเกจ nmap แต่ใช้รุ่นเก่าที่ไม่รองรับถุงเท้า 5
Randall

3

tsocks ( http://tsocks.sourceforge.net/ ) เป็น wrapper ที่ดีที่ใช้ LD_PRELOAD เพื่อให้โปรแกรมใด ๆ ใช้พร็อกซี SOCKS อย่างโปร่งใส:

tsocks ssh example.com

ใช้งานได้โปรดอย่าลืมกำหนดค่า SOCKS proxy IP ใน/etc/tsocks.conf


มันซับซ้อนเกินไปที่จะมีไฟล์กำหนดค่า
Jiang YD

1

คำสั่งต่อไปนี้จะทำเพื่อใช้ nc:

ssh examplehost.com -o "ProxyCommand=nc --proxy localhost:7000 %h %p"

ค่าเริ่มต้นคือ HTTP พร็อกซีมีพร็อกซี HTTP ที่ทำงานบนพอร์ต 7000

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