
Я добавил строку "Port 110" в /etc/ssh/sshd_config сразу под существующей строкой "Port 22", а затем сделал ожидание /etc/init.d/sshd restart
увидеть sshd, прослушивающий оба порта (22 и 110). Однако netstat -anp показал, что sshd прослушивает только порт по умолчанию (22).
Позже я попробовал bash -x /etc/init.d/sshd restart
и был поражен, увидев, что sshd немедленно привязался к порту 110!!! Повторный запуск /etc/init.d/sshd restart
проигнорировал мои изменения. Перезагрузка также игнорирует мои изменения, так что я застрял и совершенно озадачен.
ОБНОВЛЯТЬэто странное поведение кажетсятолько на низких портах (<1024)
Это на сервере CentOS 6.
Подробности
Вот мои изменения в /etc/ssh/sshd_config:
grep ^Port /etc/ssh/sshd_config
Port 22
Port 110
Вывод netstat послеbash -x /etc/init.d/sshd restart
netstat -anp | grep -i listen|grep sshd|grep -v :::
tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN 7031/sshd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 7031/sshd
Вывод netstat после/etc/init.d/sshd restart
netstat -anp | grep -i listen|grep sshd|grep -v :::
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 8962/sshd
Другой способ заставить sshd привязаться к порту 110 — запустить его в режиме отладки с помощью /usr/sbin/sshd -de
(обратите внимание на listening on port 22,110
строки, но я также тестировал, подключаясь к обоим портам):
/usr/sbin/sshd -de
debug1: sshd version OpenSSH_5.3p1
debug1: read PEM private key done: type RSA
debug1: private host key: #0 type 1 RSA
debug1: read PEM private key done: type DSA
debug1: private host key: #1 type 2 DSA
debug1: rexec_argv[0]='/usr/sbin/sshd'
debug1: rexec_argv[1]='-de'
Set /proc/self/oom_score_adj from 0 to -1000
debug1: Bind to port 22 on 0.0.0.0.
Server listening on 0.0.0.0 port 22.
debug1: Bind to port 22 on ::.
Server listening on :: port 22.
debug1: Bind to port 110 on 0.0.0.0.
Server listening on 0.0.0.0 port 110.
debug1: Bind to port 110 on ::.
Server listening on :: port 110.
решение1
Система SELinux ограничивает привязку портов для портов ниже 1024
semanage port -l | grep ssh
ssh_port_t tcp 22
Вы можете добавить еще один порт
semanage port -a -t ssh_port_t -p tcp 110
Это немедленно решит вашу проблему.