SSH забезпечує безпечний спосіб доступу та керування серверами Linux. Іноді під час підключення до SSH-серверів користувачі часто стикаються з помилкою «Відмовлено в підключенні» через порт 22. Це відбувається через кілька причин, як-от служба SSH не працює, порт заблоковано брандмауером або сервер використовує інший порт. Це також може статися через проблему конфлікту IP. У цій статті ми обговоримо деякі рішення, які слід спробувати, щоб виправити помилку.
Примітка. Команди, про які тут йдеться, перевірено на Ubuntu 20.04 LTS. Ті самі команди також дійсні для системи Debian.
Це помилка «Відмовлено в підключенні», з якою ви можете зіткнутися під час підключення до віддаленої системи через SSH.
Дотримуйтеся наведених нижче рішень крок за кроком, щоб вирішити помилку «Відмовлено в підключенні».
Одна з причин, чому ви можете отримати помилку «Відмовлено в підключенні», полягає в тому, що сервер OpenSSH не встановлено на цільовому сервері.
По-перше, вам потрібно буде переконатися, що сервер OpenSSH встановлено в системі, до якої ви намагаєтеся отримати доступ через SSH. Щоб перевірити, чи встановлено OpenSSH, виконайте таку команду в терміналі цільового сервера:
sudo apt list --installed | grep openssh-server
Ця команда фактично фільтрує термін “openssh-server” зі списку встановлених пакетів. Якщо ви отримуєте подібний результат, це означає, що сервер OpenSSH інстальовано. З іншого боку, якщо ви не отримуєте вихідних даних, це означає, що на цільовому сервері відсутній OpenSSH.
Якщо його не встановлено на цільовому сервері, ви можете встановити його за допомогою такої команди як sudo:
sudo apt install openssh-server
Потім введіть пароль sudo та, коли буде запропоновано підтвердження, натисніть «y». Після встановлення підтвердіть його за допомогою тієї ж команди
sudo apt list --installed | grep openssh-server
Служба OpenSSH працює у фоновому режимі та прослуховує вхідні підключення. Зупинка служби OpenSSH може бути однією з причин, чому ви отримуєте повідомлення про помилку «Відмовлено в підключенні».
Тому необхідно перевірити, чи запущена служба OpenSSH, за допомогою наступної команди в терміналі:
sudo service ssh status
Якщо ви бачите наступний вихід, це означає, що служба активна та працює у фоновому режимі.
З іншого боку, якщо ви отримуєте неактивний (мертвий), це означає, що служба не працює. Ви можете запустити службу OpenSSH за допомогою такої команди як sudo в терміналі:
sudo service ssh start
Щоб перезапустити службу, скористайтеся такою командою:
sudo service ssh restart
Ще одна причина отримання помилки «Відмовлено в підключенні» полягає в тому, що ви намагаєтеся підключитися до неправильного порту. Наприклад, якщо сервер налаштовано на прослуховування порту 2244, а ви намагаєтеся підключитися до порту 22 за замовчуванням, то в цьому випадку ви отримаєте повідомлення про помилку «Відмовлено в підключенні».
Перш ніж спробувати підключитися, вам потрібно перевірити порт прослуховування сервера SSH. Якщо це стандартний порт (22), ви можете підключити його за допомогою такої команди:
ssh [username]@[remoteserver IP or hostname]
Якщо це якийсь порт, відмінний від порту за замовчуванням, вам потрібно буде підключитися до SSH-сервера за допомогою цього порту:
ssh -p [port_number] [username]@[ip_address]
Щоб перевірити, який порт прослуховує сервер OpenSSH; скористайтеся такою командою в терміналі:
sudo netstat -ltnp | grep sshd
Ви отримаєте такий результат:
У третьому стовпці ви можете побачити порт прослуховування сервера 2244. Якщо це так, вам потрібно буде підключитися до сервера SSH за допомогою цього порту.
ssh -p [2244] [username]@[ip_address]
Блокування брандмауером порту SSH може бути ще однією основною причиною помилки «Відмовлено в підключенні». Якщо на сервері SSH працює брандмауер, вам потрібно буде дозволити порт SSH на ньому за допомогою наступної команди. Замініть порт номером порту, який прослуховує сервер SSH:
sudo ufw allow port /tcp
Наприклад, якщо сервер SSH прослуховує порт 2244, ви можете дозволити це в брандмауері, як:
sudo ufw allow 2244/tcp
Перезавантажте брандмауер за допомогою такої команди:
sudo ufw reload
Щоб переконатися, що правила додано, перевірте стан брандмауера за допомогою такої команди в терміналі:
sudo ufw status
Наведені нижче результати показують, що порт 2244 дозволений у брандмауері.
Помилка «Відмовлено в підключенні» також може виникати через конфлікт дублікатів IP-адрес. Отже, переконайтеся, що система не має повторюваної IP-адреси.
Встановіть утиліту arping у вашій системі за допомогою такої команди:
sudo apt install arping
Потім перевірте IP-адресу SSH-сервера.
ping <ip-address>
У вихідних даних, якщо ви бачите відповідь з кількох MAC-адрес, це означає, що в системі працює дублікат IP-адреси. Якщо це так, змініть IP-адресу SSH-сервера та спробуйте підключитися знову з новою IP-адресою.
Ось як виправити помилку «Відмовлено в підключенні» через порт 22 у системах Linux. У цій статті ми описали кілька способів, які напевно допоможуть вам у вирішенні помилки «Відмовлено в підключенні».
Оригінал статті - How to fix: Connection refused by port 22 Debian/Ubuntu