OpenSSH даёт зашифрованный удалённый доступ к серверу. По умолчанию sshd слушает порт 22, и именно его в первую очередь сканируют боты. Смена порта не заменяет ключи и файрвол, но срезает шум от автосканеров. Ниже: как посмотреть текущий порт, выбрать новый, править sshd_config в Ubuntu и не потерять доступ.
Зачем менять порт 22
- меньше автоматических попыток входа на стандартный порт;
- чище логи auth (меньше «шума» от перебора);
- чуть сложнее попасть «с первого скана» для примитивных ботов.
Это не серебряная пуля: целенаправленный сканер всё равно найдёт открытый порт. Меняйте порт вместе с ключами SSH, отключением пароля и правилами UFW/iptables.
Проверить, на каком порту слушает sshd
На современных Ubuntu удобнее ss (пакет iproute2):
sudo ss -tlnp | grep -E 'sshd|ssh'
Если есть net-tools, сработает и классика:
sudo netstat -tuln | grep ssh
В выводе обычно виден :22 (или уже ваш нестандартный порт) и процесс sshd.
Как выбрать новый порт
- диапазон 1024-65535 (привилегированные 1-1023 лучше не трогать без нужды);
- порт свободен: не занят другим сервисом на этом хосте;
- не «очевидный» 2222/22222, если хотите чуть меньше шаблонного скана (всё равно не секрет).
Проверка, свободен ли порт (пример 49222):
sudo ss -tlnp | grep 49222 || echo "порт свободен"
Изменить порт в sshd_config
1. Откройте конфиг:
sudo nano /etc/ssh/sshd_config
2. Найдите строку Port 22 (или закомментированную #Port 22). Укажите новый порт, например:
Port 49222
Можно оставить несколько директив Port временно (и 22, и новый), пока не проверите вход на новом порту. Потом уберите 22.
3. Сохраните файл (в nano: Ctrl+O, Enter, Ctrl+X).
4. Проверьте синтаксис до рестарта:
sudo sshd -t
Без ошибок в выводе — можно перезапускать службу:
sudo systemctl restart ssh # на части систем юнит называется sshd: # sudo systemctl restart sshd
Важно: не закрывайте текущую SSH-сессию, пока не убедитесь, что вход на новом порту работает. Откройте второй терминал и проверьте.
Файрвол и подключение
Разрешите новый порт до (или сразу после) рестарта sshd, иначе отрежете себя. Для UFW:
sudo ufw allow 49222/tcp sudo ufw status
Подключение с клиента:
ssh -p 49222 user@server.example.com
Или в ~/.ssh/config:
Host myserver
HostName server.example.com
User user
Port 49222
Проверка после смены
sudo ss -tlnp | grep 49222 sudo systemctl status ssh
Успешный вход с нового порта + слушающий sshd на нём — можно закрывать порт 22 в файрволе (если убрали его из конфига):
sudo ufw delete allow 22/tcp
Что ещё усилить кроме порта
- вход по ключам,
PasswordAuthentication noпосле проверки ключей; PermitRootLogin noилиprohibit-password;- ограничение по IP (UFW, fail2ban, AllowUsers/AllowGroups);
- регулярные обновления пакетов OpenSSH и системы.
Кратко
Правьте Port в /etc/ssh/sshd_config, прогоните sshd -t, откройте порт в файрволе, перезапустите ssh/sshd и проверьте вход со второго терминала. Смена порта — слой «меньше шума», а не замена ключам и политике доступа.