เมื่อคุณเข้าถึงเซิร์ฟเวอร์งานได้ คุณก็สามารถทำได้อย่างง่ายดาย
ข้อสันนิษฐานสำหรับตัวอย่าง
- ระบบต้นทาง (ที่บ้าน) : 10.0.0.1
- ระบบงาน (jump server) : 10.0.0.2 (ssh ทำงานบนพอร์ตมาตรฐาน 22/TCP)
- เซิร์ฟเวอร์ปลายทาง: 10.0.0.3 (ssh ทำงานบนพอร์ตมาตรฐาน 22/TCP)
- ส่งต่อพอร์ตผ่านเซิร์ฟเวอร์ B
ด้วยการเปิด ssh tunnel คุณสามารถตั้งค่าโลคัลพอร์ตไปข้างหน้า (-L [<local_addr>:]<local_port>:<remote_addr_to_forward_to>:<remote_port_to_forward_to> ). จากนั้นคุณสามารถเปิดการเชื่อมต่อ ssh อื่นที่ชี้ <local_addr> แต่มีพารามิเตอร์ -p <local_port> หรืออุโมงค์แรก ด้วยการกำหนดค่านี้:
- อุโมงค์แรกจะต้องถึงส่วนที่เหลือกำลังทำงานอยู่
- คุณสามารถมีการเชื่อมต่อเพิ่มเติมผ่านอุโมงค์แรก (การเชื่อมต่อ ssh เพิ่มเติม, การเชื่อมต่อ scp,...)
(1) ssh -L 10022:10.0.0.3:22 10.0.0.2
(2) ssh -p 10022 127.0.0.1
(3) scp -P 10022 <local_file> 127.0.0.1:<destination_file>
+-----+ +-----+ +-----+
| ก |=== 1 ==| ข | | ค |
| | -- 2 - | -2- | - 2 -> | |
| | -- 3 - | -3- | - 3 -> | |
| |========| | | |
+-----+ +-----+ +-----+
10.0.0.1 10.0.0.2 10.0.0.3
- พื้นเมือง การเชื่อมต่อ ssh โดยใช้โฮสต์กระโดด "เนทีฟ"
ssh ให้การสนับสนุน "เนทีฟ" สำหรับการเชื่อมต่อประเภทนี้โดยใช้ -J <ปลายทาง> พารามิเตอร์. สำหรับสเปคของ ปลายทาง ขอแนะนำให้ใช้ไฟล์ config (~./ssh/config)
ตัวอย่างของรหัสจะเป็น (การเชื่อมต่อภายนอกคือ "โปร่งใส")
(1) ssh -J 10.0.0.2 10.0.0.3
+-----+ +-----+ +-----+
| ก |========| ข | | ค |
| | -- 1 - | -1- | - 1 -> | |
| |========| | | |
+-----+ +-----+ +-----+
10.0.0.1 10.0.0.2 10.0.0.3