เมื่อมีสิทธิ์ SSH ที่ได้รับอนุญาตไปยังเซิร์ฟเวอร์ OpenSSH สร้างลิสเทนเนอร์ SOCKS บนคอมพิวเตอร์ของคุณได้ การเชื่อมต่อ SSH ขนส่งทราฟฟิกที่ส่งต่อ และเซิร์ฟเวอร์ระยะไกลเชื่อมต่อกับปลายทาง

ลิสเทนเนอร์เฉพาะ loopback

ssh -N -T -o ControlPath=none -o ForkAfterAuthentication=no -o ExitOnForwardFailure=yes -D 127.0.0.1:1080 [email protected]

เปลี่ยนบัญชีและชื่อโฮสต์ เซิร์ฟเวอร์ SSH ต้องอนุญาต forwarding ผู้ดูแลจำกัด forwarding และปลายทางแยกจากการเข้าสู่บัญชีได้

-D สร้าง dynamic forwarding และการระบุที่อยู่ loopback ชัดเจนจำกัดลิสเทนเนอร์ไว้ที่เครื่องนี้ -N ไม่เรียกคำสั่งระยะไกล ส่วน -T ไม่จัดสรร pseudo-terminal ControlPath=none หลีกเลี่ยง sharing master ที่มีอยู่ และ ForkAfterAuthentication=no คงการเรียกครั้งนี้ไว้ foreground

ให้โปรเซสทำงานระหว่างใช้พร็อกซี ถ้าพอร์ต1080 ถูกใช้แล้ว ให้เลือกพอร์ตสูงอื่นที่ว่างและแก้ไคลเอนต์ ExitOnForwardFailure=yes ทำให้ SSH ออกหากสร้างลิสเทนเนอร์ไม่ได้

ใช้เอนด์พอยต์ SOCKS

curl --proxy socks5h://127.0.0.1:1080 --noproxy '' --connect-timeout 5 --max-time 15 https://example.com/

คำขอนี้มอบการจัดการชื่อปลายทางผ่าน SOCKS5 แอปอื่นต้องตั้ง SOCKS ของตนเอง ช่องพร็อกซี HTTP พูด SOCKS กับลิสเทนเนอร์นี้ไม่ได้

ตรวจว่าโปรเซสใดเป็นเจ้าของพอร์ต:

ss -ltnp 'sport = :1080'

โปรเซส SSH ที่ตั้งใจใช้ควรเป็นเจ้าของลิสเทนเนอร์ loopback คำขอผ่านมันตรวจว่าเซิร์ฟเวอร์ระยะไกลเข้าถึงเป้าหมายได้ด้วยหรือไม่ ใช้ปลายทางที่ควบคุมเองเมื่อต้องตรวจทางออกที่สังเกตได้

อายุเซสชัน

Ctrl-C ปิดโปรเซส SSH ลิสเทนเนอร์ และการเชื่อมต่อที่ส่งต่อ หาก SSH หลุด พร็อกซีก็ใช้ไม่ได้เช่นกัน

ExitOnForwardFailure ตรวจขั้นตั้งต้น ไม่ได้ยุติ SSH ทุกครั้งที่การเชื่อมต่อปลายทางภายหลังล้มเหลว จึงควรแยกตรวจเซสชัน พอร์ตในเครื่อง และคำขอไปปลายทาง

บทความที่เกี่ยวข้อง