В статье разберём:
- как выбрать новый порт и убедиться, что он свободен;
- как открыть порт во фаерволе заранее;
- как поменять
Port
в конфигурации SSH и сохранить изменения в nano; - как протестировать подключение и закрыть 22-й;
- какие ошибки встречаются и как откатиться при сбое.
Что понадобится
-
Доступ к серверу: IP-адрес, логин (
root
или пользователь с sudo), а также доступ к веб-консоли (VNC/Web Console) в панели хостера на случай проблем. -
Windows 10/11 с PowerShell. Проверим, что SSH-клиент работает:
ssh -V ssh -h
-
Ubuntu на сервере. Фаервол по умолчанию —
ufw
, все команды выполняем через sudo.

Подключение через PowerShell
Проверим, как выглядит подключение к серверу по новому порту. Пока основной (22-й) остаётся доступным, не закрывайте его до тех пор, пока новый порт не заработает.
# Разовый тест (замените порт, IP и пользователя на свои)
ssh -p 22222 user@123.45.67.89
Чтобы не вводить параметры каждый раз, создаём конфигурационный файл:
# Файл %USERPROFILE%\.ssh\config
Host my-vps
HostName 123.45.67.89
User user
Port 22222
IdentityFile C:\Users\ВАШ_ПОЛЬЗОВАТЕЛЬ\.ssh\id_rsa
# Подключение теперь выполняется так:
ssh my-vps

Выбираем и проверяем новый порт SSH
Выберите высокое значение (например, 22222 или 55222). Значения вроде 2222/2200 часто сканируются ботами.
1) Убедитесь, что нужные утилиты есть в системе (Ubuntu/Debian):
sudo apt update
sudo apt install -y iproute2 # содержит 'ss'
# опционально: sudo apt install -y net-tools # для 'netstat'
2) Проверьте, не занят ли порт (замените 22222 на ваш):
# безопасный вариант без -p
sudo ss -ltn | grep -E '(:22222)$' || echo "порт свободен"
Если ‘ss’ отсутствует, используйте:
sudo netstat -ltn | grep -E '(:22222)$' || echo "порт свободен"

3) Сразу разрешите новый порт в UFW (до изменения sshd_config):
sudo ufw allow 22222/tcp comment 'SSH новый порт'
sudo ufw status numbered
Примечания:
- Если UFW «inactive», сначала разрешите оба порта (старый 22 и новый), затем включите UFW:
sudo ufw enable
. - На некоторых VPS есть облачный фаервол у провайдера — там тоже откройте выбранный порт.
Открываем новый порт в ufw
Перед изменением конфигурации SSH нужно открыть новый порт во фаерволе. Иначе после перезапуска службы вы не сможете подключиться.
sudo ufw allow 22222/tcp
sudo ufw status
Совет: пока не проверите новый порт — не удаляйте разрешение для 22-го. Пусть оба работают параллельно.

Редактируем sshd_config
Теперь задаём новый порт в конфигурации SSH.
# Создаём резервную копию
sudo cp -a /etc/ssh/sshd_config{,.bak}
# Открываем конфиг в nano
sudo nano /etc/ssh/sshd_config
Найдите строку:
#Port 22
Удалите # и замените на новое значение:
Port 22222
Горячие клавиши в nano:
-
Ctrl+W — поиск (введите Port и нажмите Enter).
-
Ctrl+O — сохранить файл.
-
Enter — подтвердить путь.
-
Ctrl+X — выйти из редактора.
Важно: оставьте только одну активную строку Port
, иначе sshd возьмёт последнюю.

Проверка синтаксиса и перезапуск SSH
После изменения файла убедитесь, что в нём нет ошибок. Проверим синтаксис:
sudo sshd -t -f /etc/ssh/sshd_config
Если ошибок нет — команда ничего не выведет.
Перезапускаем службу SSH:
sudo systemctl restart ssh
И проверяем, что новый порт слушается:
ss -tulpn | grep ssh

Тест подключения в PowerShell
Откройте новое окно PowerShell (старую сессию не закрывайте!) и выполните подключение через новый порт:
ssh -p 22222 user@123.45.67.89
Если подключение успешно — значит, всё сделано правильно и можно переходить к отключению 22-го порта.

Закрытие 22-го порта
Теперь, когда новый порт проверен и работает стабильно, можно убрать старый 22-й.
sudo ufw delete allow 22/tcp
sudo ufw status
Важно: делайте это только после успешного подключения по новому порту из другого окна PowerShell.

Частые ошибки и решения
-
Connection refused — новый порт не слушается или заблокирован фаерволом.
sudo systemctl status ssh --no-pager -l sudo ufw status ss -tulpn | grep ssh
-
Address already in use — порт занят другим процессом.
ss -tulpn | grep :22222
Выберите другой порт (например, 25252) и повторите настройку.
-
Несколько строк Port — учитывается только последняя. Убедитесь, что осталась одна строка:
Port 22222
-
Permission denied (publickey) — если отключили пароли, проверьте права и ключи:
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys chown -R user:user ~/.ssh
-
Подключение идёт всё ещё на 22 — укажите порт явно:
ssh -p 22222 user@123.45.67.89
Откат, если потеряли доступ
Если после смены порта вы не можете подключиться — восстановить доступ можно через веб-консоль в панели хостинга (VNC / Web Console).
-
Откройте файл конфигурации:
sudo nano /etc/ssh/sshd_config
-
Верните стандартное значение:
Port 22
-
Откройте порт 22 в ufw:
sudo ufw allow 22/tcp sudo ufw status
-
Перезапустите SSH:
sudo systemctl restart ssh
-
Проверьте, что порт слушается:
ss -tulpn | grep :22

Итоги
-
Выбрали новый порт и проверили, что он свободен.
-
Открыли его в ufw и изменили конфигурацию SSH.
-
Перезапустили службу и протестировали вход через новый порт.
-
После успешной проверки закрыли 22-й порт.
-
Разобрали частые ошибки и сценарий отката.