Назад | Перейти на главную страницу

Переадресация портов macOS для удаленного входа по ssh

Я хочу выполнять удаленный вход по ssh извне моей сети на сервер (macOS Sierra) в моей локальной сети, используя порт, отличный от 22. (я слышу что это повышает безопасность использования порта, отличного от порта по умолчанию. Это правда?)

Я успешно настроил свой маршрутизатор (Cisco RV325, который имеет фиксированный IP-адрес WAN, скажем, 99.99.99.99), чтобы я мог удаленно входить на сервер (со статическим IP-адресом LAN 12.0.0.123) через порт 22, например:

$ ssh USERNAME@99.99.99.99 -p 22 

Это прекрасно работает. Теперь я хочу иметь возможность войти через другой порт (скажем, 60022) следующим образом:

$ ssh USERNAME@99.99.99.99 -p 60022 

Я не понимаю, как перенаправить трафик с порта 60022 на 22. Это что-то, что я должен сделать в маршрутизаторе или на локальном сервере? Конфигурация «Таблица переадресации диапазона портов» маршрутизатора позволяет пересылать пакеты из заданного диапазона портов на конкретный IP-адрес, но, похоже, не позволяет мне переводить с одного порта на другой.

Если это должно произойти на сервере, я не понимаю, как это сделать. И как мне заставить macOS даже начать прослушивание порта 60022?

Я безуспешно пытался адаптировать эти инструкции Ubuntu на Mac. Я пробовал использовать pfctl для настройки переадресации:

$ echo "
rdr pass inet proto tcp from any to any port 60022 -> 127.0.0.1 port 22
pass in proto tcp from any to any port 60022
" | sudo pfctl -f -
pfctl: Use of -f option, could result in flushing of rules
present in the main ruleset added by the system at startup.
See /etc/pf.conf for further details.

No ALTQ support in kernel
ALTQ related functions disabled
$

Кажется, это не открывает порт 60022, так как (1) порт не отображается, когда я sudo lsof -i -P | grep LISTEN и (2) соединение отклоняется, когда я сижу на сервере и пытаюсь войти в систему:

$ ssh USERNAME@127.0.0.1 -p 60022 -v
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /Users/USERNAME/.ssh/config
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: /etc/ssh_config line 102: Applying options for *
debug1: Connecting to 127.0.0.1 [127.0.0.1] port 60022.
debug1: connect to address 127.0.0.1 port 60022: Connection refused
ssh: connect to host 127.0.0.1 port 60022: Connection refused
$ 

В то время как вход в систему через порт 22 работает нормально:

$ ssh USERNAME@127.0.0.1 -p 22 -v
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /Users/USERNAME/.ssh/config
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: /etc/ssh_config line 102: Applying options for *
debug1: Connecting to 127.0.0.1 [127.0.0.1] port 22.
debug1: Connection established.
...
Password:
$

В итоге:

  1. Как мне сказать macOS начать прослушивание порта 60022?
  2. Как сообщить macOS о переводе порта 60022 на 22?
  3. Есть какие-нибудь хорошие вводные / учебные пособия о том, как это сделать?
  4. Стоит ли мне вообще пытаться перенаправить на 60022 (например), или достаточно безопасно использовать порт по умолчанию 22?

Как предложил @yoonix, вы можете достичь желаемой цели полностью в маршрутизаторе, не возясь с сервером (macOS или иначе). Сводные вопросы №1 и №2 (и даже заголовок сообщения), возможно, немного вводят в заблуждение. Что касается сводного вопроса №4, см. Комментарий @Gordon Davisson.

Для достижения цели настройте роутер следующим образом:

  1. Войдите на страницу конфигурации RV325 в своем браузере. Выберите «Настройка»> «Преобразование адресов порта».
  2. В разделе «Таблица преобразования адресов портов» нажмите кнопку «Управление услугами ...». Во всплывающем окне нажмите «Добавить», затем введите имя службы (ваш удобный псевдоним для настройки преобразования адресов порта), выберите «TCP» во всплывающем меню, затем введите внешний порт (60022) и внутренний порт ( 22). Нажмите «Сохранить» и закройте всплывающее окно.
  3. Вернувшись в «Таблицу преобразования адресов портов», нажмите «Добавить». Выберите имя службы во всплывающем меню, введите IP-адрес пересылки (в примере 12.0.0.123) и установите флажок «Состояние», чтобы включить его. Щелкните «Сохранить».
  4. Перейдите в «Брандмауэр»> «Правила доступа» и нажмите кнопку «Управление службами ...». Во всплывающем окне нажмите «Добавить», затем введите имя службы (ваш псевдоним для этого правила доступа) и введите номер внешнего порта (или диапазон номеров портов), который вы хотите открыть (60022-60022 для этого пример). Нажмите «Сохранить» и закройте всплывающее окно.
  5. Наконец, в «Правилах доступа» нажмите «Добавить». Выберите «Разрешить» и имя службы, которое вы создали выше. Оставьте «Исходный IP-адрес» и «Целевой IP-адрес» как «Любой». Нажимаем «сохранить».

С этого момента маршрутизатор позаботится о необходимой переадресации и трансляции портов, поэтому ssh USERNAME@99.99.99.99 -p 60022 отправит вас прямо к демону входа в систему на желаемом сервере по адресу 12.0.0.113.