ส่งอุโมงค์ HTTP CONNECT ที่สร้างแล้วให้ Paramiko
เชื่อมต่อ Paramiko ผ่านเส้นทาง HTTP CONNECT ที่ได้รับอนุญาต โดยคงการตรวจสอบคีย์โฮสต์ SSH ไว้
หลังจากตัวช่วย HTTP CONNECT ส่งอุโมงค์กลับไปยังเซิร์ฟเวอร์ SSH ที่ต้องการแล้ว ให้ส่งสตรีมนั้นให้ Paramiko:
with paramiko.SSHClient() as client:
client.load_system_host_keys()
client.connect('ssh.example.com',
username='operator',
sock=tunnel,
banner_timeout=10,
auth_timeout=10)
# Use the verified SSH connection.แทนที่โฮสต์ตัวอย่างและโหลดข้อมูล known-hosts ที่ถูกต้องของการติดตั้ง tunnel ต้องนำไปยังเซิร์ฟเวอร์เดียวกันอยู่แล้ว ชื่อโฮสต์ที่ส่งให้ connect ระบุคีย์โฮสต์ SSH ไม่ใช่พร็อกซี
อินเทอร์เฟซ sock ยอมรับซ็อกเก็ตที่เปิดอยู่หรือออบเจ็กต์ที่คล้ายซ็อกเก็ต มันไม่ได้เจรจา HTTP แทนคุณ ก่อนส่งคืน ตัวเชื่อมต่อต้อง:
- เชื่อมต่อกับพร็อกซีและส่งคำขอ CONNECT ที่ถูกต้องสำหรับปลายทาง
- ทำการพิสูจน์ตัวตนพร็อกซีที่รองรับให้เสร็จสิ้นและตรวจสอบสถานะอุโมงค์ที่สำเร็จ
- อ่านส่วนหัวพร็อกซีทั้งหมด จัดการการอ่านบางส่วนและรักษาไบต์ที่เกินขอบเขตไว้
- จำกัดการตั้งค่าและปิดซ็อกเก็ตที่ถูกปฏิเสธ/มีข้อผิดพลาดผ่านเส้นทางการทำความสะอาด
ใช้ตัวเชื่อมต่อที่ได้รับการดูแลสำหรับงานนั้น การค้นหาวลีความสำเร็จภาษาอังกฤษในบัฟเฟอร์รับเดียวจะพลาดบรรทัดสถานะที่แยกจากกัน ข้อความเหตุผลที่แปรผัน และส่วนหัวที่ไม่สมบูรณ์ การเชื่อมต่อ TCP พร็อกซีที่สำเร็จไม่ใช่อุโมงค์ SSH ที่ยอมรับ
พร็อกซีต้องอนุญาตพอร์ต SSH ที่ร้องขอ การอนุญาตเรียกดูเว็บไม่ได้สร้างการเข้าถึง CONNECT ไปยังพอร์ต 22 407 เกิดขึ้นก่อนการเข้าสู่ระบบ SSH ในขณะที่ความล้มเหลวของบัญชี SSH เกิดขึ้นหลังอุโมงค์ แยกบัญชีเหล่านั้นออกจากกัน
ปิดไคลเอนต์ SSH และทรัพยากรที่ตัวเชื่อมต่อเป็นเจ้าของเมื่อเสร็จสิ้น การที่งานหยุดการอ่านของตนไม่ได้ปิดการเชื่อมต่อที่ยังมีชีวิตด้วยตัวเอง