ตัวรับฟัง SOCKS ภายในเครื่องมีประโยชน์ในบางเครือข่ายและไม่มีในเครือข่ายอื่น OpenSSH สามารถเลือกคำสั่งพร็อกซีตามเงื่อนไขได้ โดยไม่ให้ตัวเลือกนั้นมีผลกับทุกโฮสต์

สำหรับ OpenSSH ที่ใช้รูปแบบ OpenBSD ของ nc การกำหนดค่าฝั่งไคลเอนต์ตัวอย่างคือ:

Host work-server
    HostName ssh.example.net
    User alex

Match originalhost work-server exec "nc -z -w 1 127.0.0.1 1080"
    ProxyCommand nc -X 5 -x 127.0.0.1:1080 %h %p

Match all

originalhost จำกัดการตรวจสอบไว้ที่ชื่อที่ระบุบนบรรทัดคำสั่ง SSH exec ตรงกันเมื่อคำสั่งนั้นจบลงอย่างสำเร็จ Match all ตัวสุดท้ายจะสิ้นสุดขอบเขตตามเงื่อนไขนั้นสำหรับการตั้งค่าถัดไป

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

ซ็อกเก็ตที่กำลังรับฟังเป็นเพียงคำสัญญาเล็กๆ

การทดสอบตรวจสอบการเข้าถึง TCP ไปยังพอร์ตภายในเครื่อง โดยไม่ได้เจรจา SOCKS ให้เสร็จ ไม่ได้สร้างการเชื่อมต่อปลายทางที่ต้องการ และไม่ได้พิสูจน์ว่าโปรแกรมใดเป็นเจ้าของพอร์ตนั้น ตัวรับฟังอาจหายไปหลังการตรวจสอบได้เช่นกัน

การหมดเวลาทำให้การทดสอบที่ล้มเหลวอยู่ในขอบเขต ตัวเลือกที่แสดงเป็นของอินเทอร์เฟซ nc ของ OpenBSD โปรแกรมอื่นที่มีชื่อไฟล์เดียวกันอาจมีตัวเลือกต่างกัน

เมื่อเงื่อนไขไม่ตรง ตัวอย่างนี้จะปล่อยการเชื่อมต่อไว้โดยไม่มี ProxyCommand นี้ ซึ่งยอมให้ใช้เส้นทางปกติของมัน การทำเช่นนั้นเหมาะสมเฉพาะเมื่ออนุญาตให้เข้าถึงโดยตรง นโยบายพร็อกซีแบบบังคับไม่ควรใช้การตรวจสอบความพร้อมใช้งานเป็นสิทธิ์ในการหลบไปยังเส้นทางอื่น

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

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