Как сменить порт ssh в AlmaLinux 9
Небольшое введение: в статьях обычно пишут как сменить порт и только потом ( и то не всегда) как поменять правила в файрволле. Человек по инструкции делает команды - меняет порт, сохраняет настройки ssh и перезапускает sshd.. и может получиться облом - порт ssh мы поменяли, а правила фаера еще нет. Доступ потерян.
Поэтому, мы будем делать так:
1. добавляем выбранный для ssh порт в правила фаервола
2. меняем настройки ssh ( меняем порт )
3. и только после того как убедились что все ок - удаляем дефолтный порт 22 из фаерволла. Фаером будет выступать firewalld.
Итак, погнали:
смотрим состяние фаера:
# firewall-cmd --state
если ответом будет running то добавляем наш входящий TCP порт 3333:
1. Добавляем новый входящий порт в правило CSF (порт пусть будет 3333):
# firewall-cmd --permanent --add-port=3333/tcp # обратите внимание на флаг [b]--permanent[/b]. Если этого флага не будет, правило исчезнет после перезагрузки системы
2. Перечитываем правила, чтобы они применились:
# firewall-cmd --reload
3. Меняем порт ssh-сервера любимым редактором(здесь будет mcedit):
# mcedit /etc/ssh/sshd_config
Находим там #Port 22 ( по умолчанию закомментирован ) и меняем на Port 3333 - то есть раскомментировали и поменяли порт.
! НЕ РЕКОМЕНДУЕТСЯ!
Можно так же разрешить доступ root по ssh. Иногда это нужно, чтобы сделать какие-то действия от root.
Находим строчку #PermitRootLogin prohibit-password и меняем на
PermitRootLogin yes.
! НЕ ЗАБУДЬТЕ ПОТОМ УБРАТЬ !
4. Перезапускаем службу ssh:
# systemctl restart sshd.service
5. Удаление стандартного порта 22 для ssh:
Для удаления порта в firewalld (который является дефолтным в AlmaLinux ) и фронтэндом к которому является CSF, достаточно удалить порт командой:
firewall-cmd --permanent --remove-port=22/tcp
Но по умолчанию в AlmaLinux ssh-правило настроено как служба. Поэтому можно удалить правило как службу ssh:
# firewall-cmd --permanent --remove-service=ssh
6. Перечитываем/применяем правила:
# firewall-cmd --reload
P.S.
Несколько замечаний:
1. Правильнее, заменить порт в службе ssh. В линуксе пошли виндовым путем, где всё становится службой и что может за собой потянуть удаление службы - одному богу известно. Опять же systemd..
2. Иногда нужно заранее настроить правила, когда сервис firewalld не запущен. Стандартная команда firewall-cmd вернет ошибку:
FirewallD is not running
Для таких случаев есть - с выключенным фаерволом - есть утилита firewall-offline-cmd, которая работает также, как и firewall-cmd:
firewall-offline-cmd --list-all
firewall-offline-cmd --add-port=80/tcp
firewall-offline-cmd --add-service=ssh
В нашей статье написано в умолчальных, так сказать, "по-быстрому" условиях) Более подробнее читайте в оф.доках.
Или хорошая подробная статья про firewalld в статье Моска: https://www.dmosk.ru/miniinstruktions.php?mini=firewalld-centos

