Як правильно поміняти порт SSH
на Ubuntu Server 24.04
Одне з правил безпеки сервера - змінити стандартний порт доступу по протоколу SSH.
Краще це робити до того, як буде встановлено firewall, щоб не підправляти порт ще й там.
Логинимося sudo-користувачем на сервер, отримуємо права root.
Додай новий порт до sshd_config
sshd_configУ файлі /etc/ssh/sshd_config (увага! не ssh_config, а sshd_...!) знаходимо рядок "#Port 22" розкоментовуємо, і вказуємо бажаний нестандартний порт, наприклад:
Port 2202Рядок "#PubkeyAuthentication yes" - також розкоментуємо, хоч це ні на що не вплине, адже за замовчуванням дозвіл на з'єднання по ключу і так дозволено, просто щоб позбутися двозначності.
Якщо firewall вже встановлено - дозволь новий порт у firewall
Якщо ти використовуєш iptables, додай правило:
iptables, додай правило:iptables -A INPUT -p tcp --dport 2202 -j ACCEPT
ip6tables -A INPUT -p tcp --dport 2202 -j ACCEPT🔒 Не видаляй порт 22, поки не переконаєшся, що 2202 працює.
Перезапусти SSH-демон
systemctl restart sshПеревір, що все працює
Не закривай свою SSH-сесію! В іншому вікні термінала спробуй зайти на сервер:
І швидше за все - воно НЕ працює:
Перейди в ту сессію термінала, що ще залогінена на сервері, перевір:
Бачимо, що sshd досі слухає порт 22, а не 2202:
попри те, що:
Проблема: sshd запускається через ssh.socket, а не напряму
sshd запускається через ssh.socket, а не напрямуОсь ключовий рядок:
Це означає, що sshd запускається через systemd socket activation, тобто ssh.socket слухає порт 22, і передає з'єднання в sshd. Сам sshd при цьому не слухає самостійно.
Рішення: відключити ssh.socket, запускати sshd напряму
ssh.socket, запускати sshd напрямуЗупини socket:
Вимкни socket назавжди:
Увімкни
sshdнапряму:
Запусти службу:
Перевір:
Якщо встановлений firewall
Зберігаємо наш порт у правилах iptables:
Ще раз тестуємо вхід:
Спробуй ще раз залогінитися у паралельному терміналі, де було "Connection refused".
Якщо ок - для надійності можна перезавантажити сервер і перевірити, чи все ок після цього.
Last updated