Удаленная переадресация портов работает на TCP/1194, но не на TCP/443, даже если порт 443 на сервере не используется.

Удаленная переадресация портов работает на TCP/1194, но не на TCP/443, даже если порт 443 на сервере не используется.

У меня возникла странная проблема.

Я создал новый Linode, который будет выступать в качестве конечной точки туннелирования.

Мне удалось успешно удаленно перенаправить порт 1194, так что теперь соединения с linode-server@1194 успешно устанавливаются на порт 1194 моего компьютера, и я могу подключиться к своему VPN, подключившись к порту 1194 на моем linode-server.

Ниже приведена команда, которую я использовал (она работает):

ssh -N -R 1194:localhost:1194 [email protected]

Теперь я хочу перенаправить и 443. Я попробовал это:

ssh -N -R 443:192.168.1.122:443 [email protected]

Мой локальный сервер намеренно прослушивает 192.168.1.122 (не localhost).

Однако указанная выше команда не открывает порт 443 на сервере. Я получаю следующую ошибку:

Предупреждение: не удалось выполнить переадресацию удаленного порта для прослушиваемого порта 443

Итак, я проверил на своем linode-server, работает ли что-нибудь на порту 443. Ничего не работает:

user@linode-server:~$ sudo netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:1194            0.0.0.0:*               LISTEN      7438/sshd: user       
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      411/systemd-resolve 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      2377/sshd: /usr/sbi 
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      1513/master         
tcp6       0      0 :::1194                 :::*                    LISTEN      7438/sshd: user       
tcp6       0      0 :::22                   :::*                    LISTEN      2377/sshd: /usr/sbi 
tcp6       0      0 :::25                   :::*                    LISTEN      1513/master         
udp        0      0 127.0.0.53:53           0.0.0.0:*                           411/systemd-resolve 
user@linode-server:~$ 

На сервере нет soft-firewall. А облачный firewall Linode отключен, я все равно не могу этого сделать.

Я совершенно не понимаю, почему не работает переадресация 443.

PS - аутентификация пользователя при создании туннеля работает нормально.

Я не уверен, поможет ли это, но мой sshd_config выглядит так:

user@linode-server:~$ cat /etc/ssh/sshd_config | grep -v "^#" | grep -v "^$"
Include /etc/ssh/sshd_config.d/*.conf
PermitRootLogin no
PasswordAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
UsePAM yes
GatewayPorts yes
X11Forwarding yes
PrintMotd no
AcceptEnv LANG LC_*
Subsystem   sftp    /usr/lib/openssh/sftp-server
user@linode-server:~$

И чтобы прояснить, нет ничего в/etc/ssh/sshd_config.d/

Подробное логирование с помощью sshd на linode-server:

...
Aug 14 09:00:32 connect sshd[9499]: Postponed publickey for pi from *HIDDEN: My home public IP* port 49180 ssh2 [preauth]
Aug 14 09:00:32 connect sshd[9499]: Accepted key RSA *HIDDEN* found at /home/pi/.ssh/authorized_keys:1
Aug 14 09:00:32 connect sshd[9499]: Accepted publickey for pi from *HIDDEN: My home public IP* port 49180 ssh2: RSA *HIDDEN* 
Aug 14 09:00:32 connect sshd[9499]: pam_unix(sshd:session): session opened for user pi by (uid=0)
Aug 14 09:00:32 connect systemd-logind[578]: New session 157 of user pi.
Aug 14 09:00:32 connect sshd[9499]: User child is on pid 9579
Aug 14 09:00:32 connect sshd[9579]: bind [0.0.0.0]:443: Permission denied
Aug 14 09:00:32 connect sshd[9579]: error: bind [::]:443: Permission denied
Aug 14 09:00:32 connect sshd[9579]: error: channel_setup_fwd_listener_tcpip: cannot listen to port: 443
...

Почему отказано в разрешении? Команда удаленной переадресации, которую я использовал выше, использует одного и того же пользователя (как для успешного, так и для неудачного туннеля).

Только что найденоздесьчто это может быть из-за того, что 443 — привилегированный порт. Теперь я не хочу использовать пользователя root для включения удаленной пересылки на 443. Я заблокировал linode-server и не могу войти в систему как root (и я не хочу разрешать вход root). Согласно приведенной выше ссылке, я могу использовать setcap, на linode-server, но как мне это сделать, поскольку команда открытия туннеля фактически запускается с моего локального компьютера. Какие у меня есть альтернативы? Я знаю, что, возможно, использование более высокого порта на linode-server сработает, но я не хочу этого делать. Я бы очень хотел, чтобы это был порт 443, чтобы мне не нужно было запоминать порт.

решение1

На локальном сервере вместо этого инициирована удаленная переадресация порта с порта 8080 (непривилегированный порт)

ssh -N -R 8080:192.168.1.122:443 [email protected]

На linode-server установил инструмент под названием socatи использовал следующую команду для локальной переадресации с 8080 на 443 на linode server, и теперь это работает :)

sudo socat TCP-LISTEN:443,fork TCP:0.0.0.0:8080

решение2

Проблема в том, что порт 443 не прослушивается. Для того, чтобы вы могли подключаться к порту 443, должен быть процесс, прослушивающий порт 443. Если вы посмотрите на свой netstat, вы увидите, что в настоящее время у вас есть процесс, прослушивающий порт 1194, поэтому подключения к порту 1194 успешны. Вам нужно изменить этот процесс для прослушивания порта 443.

tcp        0      0 0.0.0.0:1194            0.0.0.0:*               LISTEN      7438/sshd: pi

Связанный контент