Sélection de l'interface pour la redirection de port SSH

24

J'ai un serveur que nous appellerons hub-server.tld avec trois adresses IP 100.200.130.121, 100.200.130.122 et 100.200.130.123. J'ai trois machines différentes derrière un pare-feu, mais je souhaite utiliser SSH pour transférer une machine vers chaque adresse IP. Par exemple: la machine un devrait écouter SSH sur le port 22 sur 100.200.130.121, tandis que la machine deux devrait faire la même chose sur 100.200.130.122, et ainsi de suite pour différents services sur des ports qui peuvent être les mêmes sur toutes les machines.

La page de manuel SSH -R [bind_address:]port:host:hostportrépertorie les ports de passerelle activés, mais lors de l'utilisation -Ravec une adresse IP spécifique, le serveur écoute toujours sur le port sur toutes les interfaces:

machine-un:

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

hub-server.tld (écoute SSH sur le 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

Existe-t-il un moyen de faire des connexions SSH de transfert uniquement sur une adresse IP spécifique vers la machine-un afin que je puisse écouter le port 22 sur les autres adresses IP en même temps, ou devrais-je faire quelque chose avec iptables? Voici toutes les lignes de ma configuration ssh qui ne sont pas des commentaires / valeurs par défaut:

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
la source

Réponses:

37

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

Vous souhaitez définir cela sur au clientspecifiedlieu de yes.

mgorven
la source
Super merci! Je souhaite vraiment que la page de manuel de ssh (1) indique que clientspecifiedc'était nécessaire au lieu de simplement dire "activé": "La spécification d'une adresse de liaison distante ne réussira que si l'option GatewayPorts du serveur est activée (voir sshd_config (5))". De là, je pensais qu'il fallait juste le régler yes.
Eric Pruitt