У мене є сервер, який ми будемо називати 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, тоді як machine-two повинен робити те саме на 100.200.130.122 і так далі для різних служб на портах, які можуть бути однаковими для всіх машин.
Сторінка SSH man -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
clientspecified
потрібно замість того, щоб просто сказати "увімкнено": "Визначення віддаленої bind_address буде успішним лише в тому випадку, якщо параметр GatewayPorts сервера включений (див. Sshd_config (5))". З цього я подумав, що це просто потрібно налаштуватиyes
.