В этой статье мы увидим как изменить стандартный порт подключения SSH на не стандартный, и отключить авторизацию по паролю.
!!! ВАЖНО !!!
Убедитесь что перед этим Вы уже создали SSH ключи, и успешно подключились к северу с их использованием. Или же у Вас имеется доступ к серверу по VNC что бы обратно включить авторизацию по паролю и вернуть настройки по умолчанию.
И так, для начала необходимо отредактировать файл sshd_config:
vim /etc/ssh/sshd_config
В строке Port 22 (Раскомментируем если закомментирована) и изменяем порт 22 на нужный порт, например 22333:
Port 22333
Перезапускаем службу sshd:
systemctl restart sshd
Проверим, слушается ли установленный порт 22333
netstat -tupln | grep ssh
Если мы видим, что для службы sshd слушается нужный нам порт 22333, или другой который Вы установили, то для того что бы нам подключиться уже используя его, необходимо разрешить его использование из вне.
Для этого необходимо добавить правило в список iptables:
iptables -I INPUT -p tcp --dport 22333 -m state --state NEW -j ACCEPT
Командой iptables -L можем посмотреть что правило добавилось.
После этого необходимо сохранить правила, что бы после перезапуска установленный порт остался доступным.
Для Centos 7 используем данную команду:
Сохранение текущих правил iptables
:
iptables-save > /etc/sysconfig/iptables
Эта команда сохранит текущие правила iptables
в файл /etc/sysconfig/iptables
.
Для автоматического восстановления правил при загрузке системы, убедитесь, что у вас установлен пакет iptables-services
:
yum install iptables-services
Затем включите и запустите службу:
systemctl enable iptables
systemctl start iptables
Помните, что если вы используете firewalld
, он может конфликтовать с iptables
. Если вы решите использовать iptables
напрямую, рекомендуется отключить и остановить firewalld
:
systemctl stop firewalld
systemctl disable firewalld
service iptables save
Для Ubuntu используем другую команду. Для этого необходимо установить iptables-persistent.
apt-get install iptables-persistent
Если получили ошибку, что нет подходящего пакета или репозитория, обновите репозитории. После этого установите обновления.
apt update
apt upgrade
Если данный пакет установлен, и необходимо сохранить правила:
dpkg-reconfigure iptables-persistent
Во время реконфигурации, ответьте - YES на оба вопроса.
После этого можно сохранить правила для ipv4:
iptables-save | sudo tee /etc/iptables/rules.v4
Для ipv6:
ip6tables-save | sudo tee /etc/iptables/rules.v6
В случае Если включен firewall добавляем правило для него:
firewall-cmd --permanent --add-port=22333/tcp
И так же перезапускаем службу firewalld:
systemctl restart firewalld
Отключить аутентификацию по паролю SSH
Для этого правим файл /etc/ssh/sshd_config:
vim /etc/ssh/sshd_config
Ищем строку:
PasswordAuthentication yes
И изменяем ее на:
PasswordAuthentication no
Если в начале этой строки есть символ # (закомментированный), удалите его. Сохраните файл после внесения этих изменений и перезапустите службу sshd:
systemctl restart ssh
Теперь можно перезагрузить сервер, и убедится, что вы сделали все верно.
reboot
Если все сделали верно, то подключение к серверу с новым портом пройдет без "танцев" происшествий.