ฉันมีเซิร์ฟเวอร์ที่เราจะเรียก hub-server.tld ด้วยที่อยู่ IP สามที่ 100.200.130.121, 100.200.130.122 และ 100.200.130.123 ฉันมีสามเครื่องที่แตกต่างกันซึ่งอยู่หลังไฟร์วอลล์ แต่ฉันต้องการใช้ SSH เพื่อส่งต่อเครื่องหนึ่งเครื่องไปยังที่อยู่ IP แต่ละเครื่อง ตัวอย่างเช่น: เครื่องหนึ่งควรฟัง SSH บนพอร์ต 22 บน 100.200.130.121 ในขณะที่เครื่องสองควรทำเช่นเดียวกันกับ 100.200.130.122 และอื่น ๆ สำหรับบริการต่าง ๆ ในพอร์ตที่อาจเหมือนกันในทุกเครื่อง
SSH man page -R [bind_address:]port:host:hostport
แสดงรายการฉันเปิดใช้งานพอร์ตเกตเวย์แล้ว แต่เมื่อใช้-R
กับที่อยู่ IP ที่ระบุเซิร์ฟเวอร์ยังคงฟังพอร์ตผ่านส่วนต่อประสานทั้งหมด:
เครื่องหนึ่ง
# ssh -NR 100.200.130.121:22:localhost:22 root@hub-server.tld
hub-server.tld (ฟัง SSH บนพอร์ต 2222):
# netstat -tan | grep LISTEN
tcp 0 0 100.200.130.121:2222 0.0.0.0:* LISTEN
tcp 0 0 :::22 :::* LISTEN
tcp 0 0 :::80 :::* LISTEN
มีวิธีที่จะทำให้ SSH ส่งต่อการเชื่อมต่อเฉพาะที่อยู่ IP ที่เฉพาะเจาะจงไปยังเครื่องหนึ่งดังนั้นฉันสามารถฟังพอร์ต 22 บนที่อยู่ IP อื่น ๆ ในเวลาเดียวกันหรือฉันจะต้องทำอะไรกับ iptables? นี่คือบรรทัดทั้งหมดในการกำหนดค่า ssh ของฉันที่ไม่ใช่ความคิดเห็น / ค่าเริ่มต้น:
Port 2222
Protocol 2
SyslogFacility AUTHPRIV
PasswordAuthentication yes
ChallengeResponseAuthentication no
GSSAPIAuthentication no
GSSAPICleanupCredentials no
UsePAM yes
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL
AllowTcpForwarding yes
GatewayPorts yes
X11Forwarding yes
ClientAliveInterval 30
ClientAliveCountMax 1000000
UseDNS no
Subsystem sftp /usr/libexec/openssh/sftp-server
clientspecified
ต้องการแทนที่จะบอกว่า "enabled": "การระบุ bind_address ระยะไกลจะทำได้ก็ต่อเมื่อตัวเลือก GatewayPorts ของเซิร์ฟเวอร์นั้นเปิดใช้งาน (ดู sshd_config (5))"yes
จากที่ผมคิดว่ามันก็จำเป็นต้องได้รับการตั้งค่าให้