Selezione dell'interfaccia per il port forwarding SSH


24

Ho un server che chiameremo hub-server.tld con tre indirizzi IP 100.200.130.121, 100.200.130.122 e 100.200.130.123. Ho tre macchine diverse che si trovano dietro un firewall, ma voglio usare SSH per il port forwarding di una macchina a ciascun indirizzo IP. Ad esempio: machine-one dovrebbe ascoltare SSH sulla porta 22 il 100.200.130.121, mentre machine-due dovrebbe fare lo stesso il 100.200.130.122 e così via per servizi diversi su porte che possono essere uguali su tutte le macchine.

La pagina man di SSH ha -R [bind_address:]port:host:hostportelencato Ho porte gateway abilitate, ma quando si usa -Rcon un indirizzo IP specifico, il server è ancora in ascolto sulla porta attraverso tutte le interfacce:

machine-one:

# ssh -NR 100.200.130.121:22:localhost:22 root@hub-server.tld

hub-server.tld (ascolta SSH sulla porta 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

C'è un modo per fare in modo che SSH inoltri solo connessioni su un indirizzo IP specifico a machine-one in modo da poter ascoltare contemporaneamente la porta 22 sugli altri indirizzi IP o dovrò fare qualcosa con iptables? Ecco tutte le righe nella mia configurazione SSH che non sono commenti / impostazioni predefinite:

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

Risposte:


37

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

Si desidera impostare questo clientspecifiedinvece di yes.


Fantastico grazie! Vorrei davvero che la pagina man di ssh (1) affermasse che clientspecifiedera necessario invece di dire semplicemente "abilitato": "La specifica di un indirizzo_ind_bind remoto avrà successo solo se l'opzione GatewayPorts del server è abilitata (vedere sshd_config (5))". Da quello, ho pensato che doveva essere impostato su yes.
Eric Pruitt,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.