เรามีเซิร์ฟเวอร์สาธารณะที่ยอมรับการเชื่อมต่อ SSH จากไคลเอนต์หลายหลังไฟร์วอลล์
ไคลเอนต์เหล่านี้แต่ละคนสร้างอุโมงค์ SSH แบบย้อนกลับโดยใช้ssh -R
คำสั่งจากเว็บเซิร์ฟเวอร์ที่พอร์ต 80 ไปยังเซิร์ฟเวอร์สาธารณะของเรา
พอร์ตปลายทาง (ที่ฝั่งไคลเอ็นต์) ของ Reverse SSH Tunnel คือ 80 และพอร์ตต้นทาง (ที่ด้านเซิร์ฟเวอร์สาธารณะ) ขึ้นอยู่กับผู้ใช้ เราวางแผนที่จะบำรุงรักษาแผนที่ที่อยู่ของพอร์ตสำหรับผู้ใช้แต่ละคน
ตัวอย่างเช่นไคลเอ็นต์ A จะทำการส่งผ่านเว็บเซิร์ฟเวอร์ที่พอร์ต 80 ไปยังพอร์ต 8000 ของเรา ลูกค้า B จาก 80 ถึง 8001; ไคลเอนต์ C จาก 80 ถึง 8002
Client A: ssh -R 8000:internal.webserver:80 clienta@publicserver
Client B: ssh -R 8001:internal.webserver:80 clientb@publicserver
Client C: ssh -R 8002:internal.webserver:80 clientc@publicserver
โดยทั่วไปสิ่งที่เราพยายามทำคือผูกผู้ใช้แต่ละคนด้วยพอร์ตและไม่อนุญาตให้ผู้ใช้ทันเนลไปยังพอร์ตอื่น ๆ
หากเรากำลังใช้คุณลักษณะการส่งสัญญาณไปข้างหน้าของ SSH ด้วยssh -L
เราสามารถอนุญาตให้พอร์ตใดที่จะถูกช่องสัญญาณโดยใช้การpermitopen=host:port
กำหนดค่า อย่างไรก็ตามไม่มีอะไรเทียบเท่ากับอุโมงค์ SSH ย้อนกลับ
มีวิธี จำกัด พอร์ตการย้อนกลับช่องสัญญาณต่อผู้ใช้หนึ่งคนหรือไม่?