Auswählen der Schnittstelle für die SSH-Portweiterleitung

24

Ich habe einen Server, den wir hub-server.tld mit drei IP-Adressen 100.200.130.121, 100.200.130.122 und 100.200.130.123 nennen. Ich habe drei verschiedene Computer, die sich hinter einer Firewall befinden, aber ich möchte SSH verwenden, um einen Computer an jede IP-Adresse weiterzuleiten. Beispiel: Maschine 1 sollte auf Port 22 am 100.200.130.121 auf SSH warten, während Maschine 2 am 100.200.130.122 dasselbe tun sollte, und so weiter auf verschiedene Dienste an Ports, die auf allen Maschinen gleich sein können.

In der SSH-Manpage ist -R [bind_address:]port:host:hostportaufgeführt, dass ich Gateway-Ports aktiviert habe. Bei Verwendung -Reiner bestimmten IP-Adresse überwacht der Server den Port jedoch weiterhin über alle Schnittstellen hinweg:

Maschine eins:

# ssh -NR 100.200.130.121:22:localhost:22 [email protected]

hub-server.tld (Lauscht nach SSH an Port 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

Gibt es eine Möglichkeit, SSH-Verbindungen nur über eine bestimmte IP-Adresse an Computer 1 weiterzuleiten, damit ich gleichzeitig auf Port 22 der anderen IP-Adressen lauschen kann, oder muss ich etwas mit iptables tun? Hier sind alle Zeilen in meiner ssh-Konfiguration, die keine Kommentare / Standardwerte sind:

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
Eric Pruitt
quelle

Antworten:

37

Von 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”.

Sie möchten dies clientspecifiedanstelle von festlegen yes.

mgorven
quelle
Geil, danke! Ich wünschte wirklich, die Manpage für ssh (1) hätte angegeben, dass sie clientspecifiedbenötigt wird, anstatt nur "enabled" zu sagen: "Die Angabe einer entfernten Bindungsadresse ist nur dann erfolgreich, wenn die GatewayPorts-Option des Servers aktiviert ist (siehe sshd_config (5))". Davon ausgehend dachte ich, dass es nur eingestellt werden muss yes.
Eric Pruitt