Вопрос: Выбор интерфейса для пересылки портов SSH


У меня есть сервер, который мы будем называть hub-server.tld с тремя IP-адресами 100.200.130.121, 100.200.130.122 и 100.200.130.123. У меня есть три разных компьютера, которые находятся за брандмауэром, но я хочу использовать SSH для пересылки одной машины на каждый IP-адрес. Например: machine-one должен прослушивать SSH на порту 22 на 100.200.130.121, тогда как машина-2 должна делать то же самое на 100.200.130.122 и т. Д. Для разных сервисов на портах, которые могут быть одинаковыми на всех машинах.

Персональная страница SSH -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

22
2018-04-13 22: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”.

Вы хотите установить это clientspecified вместо yes,


33
2018-04-13 22:49



Удивительно, спасибо! Я очень хочу, чтобы страница man для ssh (1) заявила, что clientspecified был нужен, вместо того, чтобы просто говорить «включено»: «Указание удаленного связывания_данных будет успешным только в том случае, если включена опция GatewayPorts сервера (см. sshd_config (5))». Из этого я думал, что нужно просто установить yes, - Eric Pruitt