คุณกำลังขอให้ฟังบนพอร์ตในเครื่องของคุณ 22 และส่งต่อการเชื่อมต่อไปยังพอร์ตของระบบระยะไกล 8090 คุณไม่สามารถทำเช่นนั้นได้เพราะพอร์ต 22 ในเครื่องของคุณถูกใช้โดยเซิร์ฟเวอร์ SSH ในพื้นที่ของคุณ
ฉันคิดว่าสิ่งที่คุณกำลังมองหาคือการส่งต่อระยะไกล การแทนที่-L 22:localhost:8090
ด้วย-R 8090:localhost:22
จะบอกให้รีโมตโฮสต์รับฟังพอร์ต 8090 และส่งต่อคำขอไปยังเซิร์ฟเวอร์ SSH ของคุณ
หากคุณออกจากการเชื่อมต่อเพื่อให้คุณสามารถเข้าใช้งานได้ในภายหลังจากไซต์ระยะไกลคุณจะต้องแน่ใจว่าการเชื่อมต่อไม่หมดเวลาเนื่องจากไม่มีการใช้งานโดยเพิ่มตัวเลือกที่เกี่ยวข้อง ( -o TCPKeepAlive=yes
หรือ-o ServerAliveInterval=30
)
ดังนั้นคุณจะจบลงด้วยสิ่งที่ชอบ:
ssh -N user@my_server -R 8090:localhost:22 -o ServerAliveInterval=30
นอกจากนี้หากหนึ่งในเครือข่าย hops ระหว่างคุณและเซิร์ฟเวอร์หยุดทำงาน ณ จุดใด ๆ การเชื่อมต่อจะลดลงแม้จะมีตัวเลือก KeepAlive ที่คุณระบุดังนั้นคุณอาจต้องการเพิ่มคำสั่งนี้ใน inittab หรือดูแพคเกจ daemontools หรือ distro's เทียบเท่าเพื่อให้มันเริ่มต้นเสมอในการบูตและรีสตาร์ทเมื่อออกจากเหตุผลอื่น ๆ แล้วปิดระบบ (หรือคุณสามารถเรียกใช้จากเชลล์สคริปต์ที่ลูปไม่ จำกัด แต่ init หรือ daemontools เป็นโซลูชั่นที่สะอาดกว่า)