เลือกอินเตอร์เฟสสำหรับการส่งต่อพอร์ต SSH


24

ฉันมีเซิร์ฟเวอร์ที่เราจะเรียก 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

คำตอบ:


37

จากsshd_config(5):

GatewayPorts

  Specifies whether remote hosts are allowed to connect to ports forwarded 
  for the client.  By default, sshd(8) binds remote port forwardings to the
  loopback address. This prevents other remote hosts from connecting to 
  forwarded ports.  GatewayPorts can be used to specify that sshd should 
  allow remote port forwardings to bind to non-loopback addresses, thus 
  allowing other hosts to connect.  The argument may be “no” to force remote 
  port forwardings to be available to the local host only, “yes” to force 
  remote port forwardings to bind to the wildcard address, or 
  “clientspecified” to allow the client to select the address to which the 
  forwarding is bound.  The default is “no”.

คุณต้องการที่จะตั้งค่านี้แทนclientspecifiedyes


เยี่ยมมากขอบคุณ! ฉันต้องการให้ man page สำหรับ ssh (1) ระบุว่าclientspecifiedต้องการแทนที่จะบอกว่า "enabled": "การระบุ bind_address ระยะไกลจะทำได้ก็ต่อเมื่อตัวเลือก GatewayPorts ของเซิร์ฟเวอร์นั้นเปิดใช้งาน (ดู sshd_config (5))" yesจากที่ผมคิดว่ามันก็จำเป็นต้องได้รับการตั้งค่าให้
Eric Pruitt
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.