У меня есть два сервера CentOS 7 (гипервизор и реле для этого сценария). Я хочу подключиться к порту VNC на гипервизоре, который находится за брандмауэром, с помощью Relay с сервером с SSH, открытым для гипервизора.
Прошу гипервизора установить соединение командой:
ssh -N -R 0.0.0.0:5912:127.0.0.1:5912 root@Relay
Как только я это сделаю, я могу подключиться к порту на реле с помощью
telnet localhost:5912
и получаю ответ: RFB 003.008
Когда я использую telnet, используя назначенный IP-адрес:
telnet 1.2.3.4:5912
на реле: соединение отклонено
Обратите внимание, что IP 1.2.3.4 - это IP-адрес сетевого адаптера Relay, а не какой-либо IP-адрес с NAT.
Я также не могу подключиться с другого сервера в подсети Relay.
По умолчанию sshd не разрешает удаленный доступ к портам, перенаправленным таким образом. Это задокументировано в ssh(1)
справочная страница.
Specifying a remote bind_address will only succeed if the
server's GatewayPorts option is enabled (see sshd_config(5)).
Документация для GatewayPorts
говорит, что по умолчанию выключено. Поскольку это важно с точки зрения безопасности, это разумное значение по умолчанию. Из 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 con‐
nect. 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.