ฉันต้องสร้างพอร์ตที่ส่งต่อจากระยะไกลโดยพลการไปยังพอร์ตในเครื่องเฉพาะเมื่อเชื่อมต่อกับเซิร์ฟเวอร์ ฉันไม่มีสิทธิ์ของผู้ดูแลระบบบนเซิร์ฟเวอร์ ซึ่งเป็นทรัพยากรคอมพิวเตอร์ที่สำคัญที่คนจำนวนมากใช้ ฉันไม่สามารถเลือกหมายเลขพอร์ตรีโมตแบบคงที่ได้ เพราะฉันไม่มีเหตุผลที่จะคาดหวังว่าหมายเลขพอร์ตนี้จะพร้อมใช้งานตลอดเวลา
ฉันกำลังใช้คำสั่งเช่น ssh -R 0:localhost:8001 ชื่อเซิร์ฟเวอร์
-- ใช้ 0 สำหรับหมายเลขพอร์ต ดังนั้นเซิร์ฟเวอร์ระยะไกลสามารถเลือกพอร์ตให้ฉันได้ วิธีนี้ใช้ได้ดี ลูกค้าบอกหมายเลขพอร์ตที่จัดสรรให้ฉัน จากนั้นฉันสามารถใช้มันเพื่อเชื่อมต่อกลับไปยังเครื่องของฉัน (หรือหมายเลขอื่นในเครือข่ายของฉัน) ด้วยตนเอง
ปัญหาคือฉันต้องเขียนสคริปต์บางอย่างเพื่อให้ผู้อื่นใช้บนระบบรีโมต และฉันต้องการวิธีการกำหนดที่ปลายทางระยะไกลว่าหมายเลขพอร์ตสำหรับเซสชันนั้นคืออะไร ฉันได้ดูตัวแปรสภาพแวดล้อม SSH_* ในเซสชันแล้ว และไม่มีประโยชน์เลย ฉันได้ลองค้นหาผลลัพธ์ของ เอสเอส -le | grep "uid:$UID"
และนั่นทำให้พบพอร์ตอื่น ๆ แต่ดูเหมือนว่าค่อนข้างซับซ้อนและไม่แน่นอนที่จะใช้งานได้เสมอ โดยเฉพาะอย่างยิ่งหากผู้ใช้บังเอิญมีกระบวนการอื่นทำงานอยู่ บางทีอาจอยู่ในเซสชันการเข้าสู่ระบบที่แตกต่างกัน
มีวิธีที่ชัดเจนและไม่ยุ่งเหยิงในการค้นหาหมายเลขพอร์ตส่งต่อระยะไกลที่จัดสรรแบบไดนามิกหรือไม่
แก้ไข: ฉันเพิ่งพบว่าสิ่งนี้ซ้ำกับ โพสต์ก่อนหน้านี้ซึ่งคำถามถูกถามด้วยเงื่อนไขที่แตกต่างกันเล็กน้อย แต่เป็นสิ่งเดียวกันทุกประการ น่าเสียดายที่ฉันไม่สามารถใช้วิธีแก้ไขปัญหาที่เกี่ยวข้องกับรูทหรือ sudo บนเซิร์ฟเวอร์ได้
ฉันกำลังรวบรวมว่าสิ่งที่ฉันต้องการอาจไม่สามารถทำได้ด้วยวิธีที่เชื่อถือได้ -- ทำให้การเลือกพอร์ตอัตโนมัตินี้เป็นคุณสมบัติที่มีประโยชน์น้อยกว่ามาก