Я хочу выполнять удаленный вход по ssh извне моей сети на сервер (macOS Sierra) в моей локальной сети, используя порт, отличный от 22. ([ Я слышал , что это повышает безопасность использования порта, отличного от порта по умолчанию. Верно ли это?)
Я успешно настроил свой маршрутизатор ( Cisco RV325 , который имеет фиксированный IP-адрес WAN. адрес, скажем, 99.99.99.99), чтобы я мог удаленно войти на сервер (со статическим IP-адресом в локальной сети 12.0.0.123) через порт 22, например:
$ ssh USERNAME@99.99.99.99 -p 22
Это нормально работает. Теперь я хочу иметь возможность вести журнал через другой порт (скажем, 60022), вот так:
$ ssh USERNAME@99.99.99.99 -p 60022
Я не понимаю, как перенаправить трафик с порта 60022 на 22. Это что-то, что я должен сделать на маршрутизаторе или на локальном сервере? Маршрутизатор " Порт Ран ge Forwarding Table "config действительно позволяет пересылать пакеты из заданного диапазона портов на определенный 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:
$
В итоге:
Как предположил @yoonix, вы можете достичь желаемой цели полностью в маршрутизаторе, не возясь с сервером (macOS или иначе). Сводные вопросы №1 и №2 (и даже название сообщения), возможно, немного вводят в заблуждение. Что касается сводного вопроса №4, см. Комментарий @Gordon Davisson.
Для достижения цели настройте маршрутизатор следующим образом:
С этого момента маршрутизатор позаботится о необходимой переадресации и преобразовании портов, так что выполнение ssh (hidden) -p 60022
направит вас прямо к демону входа в систему на желаемый сервер по адресу 12.0.0.113.