ฉันสร้างพอร์ต SSH local forwarding บนเครื่องระยะไกล:
ssh -N -L 127.0.0.1:3388:127.0.0.1:22 localhost
มันทำงานบนเครื่องระยะไกลเอง:
telnet localhost 3388
ผลตอบแทน
ลอง 127.0.0.1...
เชื่อมต่อกับ 127.0.0.1
อักขระ Escape คือ '^]'
SSH-2.0-OpenSSH_7.4
อย่างไรก็ตาม เมื่อฉันใช้การส่งต่อนี้จากเครื่องโลคัล:
telnet remote.ip 3388
มันล้มเหลว:
กำลังพยายาม remote.ip...
telnet: ไม่สามารถเชื่อมต่อกับโฮสต์ระยะไกล: การเชื่อมต่อถูกปฏิเสธ
บางคนอาจคิดว่าพอร์ต 3388 ของเครื่องระยะไกลถูกบล็อกโดยไฟร์วอลล์หรือบางอย่างจากเครือข่าย ดังนั้นฉันจึงปิดการส่งต่อ SSH และทดสอบเซิร์ฟเวอร์ http ที่ฟังพอร์ต 3388 บนเครื่องระยะไกล:
python3 -m http.server 3388
จากนั้นฉันเชื่อมต่อกับพอร์ตนี้จากเครื่องของฉัน:
telnet remote.ip 3388
ผลลัพธ์ที่ได้
กำลังพยายาม remote.ip...
เชื่อมต่อกับ remote.ip
อักขระ Escape คือ '^]'
ล้มเลิก
<!DOCTYPE HTML สาธารณะ "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<หัว>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<title>การตอบสนองผิดพลาด</title>
</หัว>
<เนื้อหา>
<h1>การตอบสนองผิดพลาด</h1>
<p>รหัสข้อผิดพลาด: 400</p>
<p>ข้อความ: ไวยากรณ์คำขอไม่ถูกต้อง ('quit ')</p>
<p>คำอธิบายรหัสข้อผิดพลาด: HTTPStatus.BAD_REQUEST - ไวยากรณ์คำขอไม่ถูกต้องหรือวิธีการที่ไม่รองรับ</p>
</body>
</html>
การเชื่อมต่อถูกปิดโดยโฮสต์ต่างประเทศ
ซึ่งหมายความว่าพอร์ต 3388 บนเครื่องระยะไกลสามารถเข้าถึงได้โดยเครื่องท้องถิ่นของฉัน เหตุใดทั้งการส่งต่อ SSH และเครือข่ายจึงทำงานได้อย่างถูกต้องตามแต่ละบุคคล แต่ล้มเหลวเมื่อรวมกัน มีคนรู้วิธีแก้ไขปัญหานี้หรือไม่ ขอบคุณ.