Очень короткий и основной вопрос, у меня проблемы с домашним заданием сети, которое у меня есть. Это то, что меня просят реализовать:

  • Настройте переадресацию удаленного порта SSH, чтобы перенаправить порт 83 компьютера pc1 на порт 8000 сервера s1.

Для этого я использовал простой

s1:~# ssh -o StrictHostKeyChecking=no -NR 83:127.0.0.1:8000 ssh_user@10.0.1.2 &

Где 10.0.1.2 - это IP-адрес компьютера 1, однако каждый раз, когда я получаю предупреждение:

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

У меня ничего не работает, что уже использует 83, также, если я попытаюсь локально (с pc1) попытаться прослушать порт 83, я могу легко это сделать.

Примечание. Я получаю эту ошибку со всех привилегированных портов, которые пытаюсь связать.

1
Ozozuz 26 Ноя 2019 в 00:48
В итоге мы решили эту проблему с помощью другого инструмента с sudo для переадресации привилегированного порта. С помощью ssh переадресуйте непривилегированный порт, например 1443, затем с помощью socat выполните sudo socat TCP-LISTEN:443,fork TCP:127.0.0.1:1443
 – 
Luc
6 Июл 2021 в 15:43

2 ответа

Вы либо должны быть root для привязки портов ниже 1024, либо иметь возможность CAP_NET_BIND_SERVICE. Чтобы получить его, выполните:

 sudo -E -- setpriv --inh-caps +net_bind_service --ambient-caps +net_bind_service --reuid $USERNAME /bin/bash

При этом от имени root запускается утилита setpriv, которая переключается обратно на ваш uid, но добавляет возможность CAP_NET_BIND_SERVICE.

1
Piotr P. Karwasz 26 Ноя 2019 в 02:39

Вам нужно быть пользователем root на pc1 aka 10.0.1.2, чтобы перенаправлять порты менее 1024, а не ssh_user.

Поскольку вы можете привязать порт 83, если вы вошли в систему pc1 (предположительно, как root), может быть проще начать с pc1 и ssh на s1. Используйте «-L» для локальной привязки порта 83, а не «-R».

0
icarus 26 Ноя 2019 в 02:17
Пользователь на s1 — root, на ПК я попытался переместить ssh_user в качестве пользователя root с помощью: «usermod -aG sudo ssh_user», но ничего не изменилось. Да, было бы намного проще использовать локальный порт forw. но это не то, что меня просят реализовать: c
 – 
Ozozuz
26 Ноя 2019 в 12:36