Не могу подключиться по SSH
Если SSH на VPS MHost не пускает, причина почти всегда одна из немногих: сервер выключен, неверный адрес или порт, файрвол блокирует соединение, служба sshd не отвечает, IP забанен в fail2ban, либо не подходит пароль или ключ. В этой статье — чек-лист: как по тексту ошибки понять, что именно сломалось, и как это исправить, используя графическую консоль VMmanager 6, если сам SSH недоступен.
Что понадобится
- VPS MHost на Ubuntu 22.04/24.04, Debian 11/12 или AlmaLinux/Rocky Linux 8/9.
- IP-адрес сервера и учётные данные — root или sudo-пользователь, пароль или SSH-ключ.
- Доступ к панели VMmanager 6 — как запасной вариант: графическая консоль VNC в ней работает независимо от SSH и файрвола сервера, поэтому позволяет исправить проблему изнутри, даже если сам SSH недоступен. Если ещё не заходили в панель — см. «Как войти в VMmanager 6».
Шаг 1. Прочитайте текст ошибки — он подсказывает, где искать
SSH-клиент обычно не просто молчит при отказе — он называет причину, и она сразу сужает круг подозреваемых:
- `Connection refused` (полная строка обычно выглядит как
ssh: connect to host 185.246.66.12 port 22: Connection refused) — сервер ответил «здесь никто не слушает»: пакет дошёл, но подключение сразу отклонено. Обычно это значит, что служба sshd не запущена или слушает другой порт (Шаг 5); реже — что ваш IP только что забанен fail2ban (Шаг 6 — действие бана в fail2ban по умолчанию как раз отвечает отказом, а не тишиной) или сработало явное правило файрвола на отклонение. В любом случае сеть и IP-адрес точно в порядке — сервер вам ответил. - `Connection timed out` (
ssh: connect to host 185.246.66.12 port 22: Connection timed out), либо подключение просто зависает без ответа — в отличие от «refused», сюда вообще ничего не вернулось. Обычно это файрвол молча отбрасывает пакеты — например, правило ufw по умолчанию (Шаг 4), — либо сервер выключен (Шаг 2), либо указан неверный IP-адрес (Шаг 3). - `Permission denied (publickey,password)` (или
(publickey), если пароль отключён) — сеть, файрвол и sshd тут ни при чём: соединение уже установлено, sshd на связи, но он не принял ваши учётные данные. Разбирайтесь с логином, паролем или ключом (Шаг 7).
Шаг 2. Убедитесь, что сервер вообще включён
- Войдите в панель VMmanager 6 — см. «Как войти в VMmanager 6».
- В списке виртуальных машин найдите свой сервер и посмотрите на его статус.
- Если сервер выключен — откройте меню «⋮» (три точки) рядом с ним и выберите «Запустить».
- Если сервер числится включённым, но не отвечает вообще ни на что — там же есть «Перезапустить».
📷 скриншот: список ВМ со статусом сервера и меню «⋮» с пунктами «Запустить»/«Перезапустить»
Самая надёжная проверка — открыть графическую консоль VNC прямо в браузере: у неё нет отдельных требований к сети и файрволу сервера, так что если он загрузился, вы увидите его экран в любом случае. Подробный порядок действий — в статье «Консоль VNC и первое подключение (SSH/RDP)».
Шаг 3. Проверьте IP-адрес, порт и имя пользователя
- IP-адрес. Возьмите его из письма об активации сервера или со вкладки «IP-адреса» в карточке ВМ в VMmanager 6. После переустановки ОС адрес обычно остаётся прежним, но сверить не помешает — особенно если подключаетесь по старой заметке или сохранённому профилю в SSH-клиенте.
- Порт. По умолчанию SSH слушает
22, и без флага-pклиент всегда пробует именно его. Если порт меняли (см. статью «Усиление SSH») — указывайте его явно:ssh -p 2222 root@185.246.66.12. - Имя пользователя.
rootподходит для свежего сервера. Если позже завели отдельного пользователя сsudoи ограничили root по SSH — подключайтесь именно под ним:ssh user@185.246.66.12, а не подroot. Имя пользователя регистрозависимо.
Шаг 4. Проверьте, не блокирует ли соединение файрвол
Если на Шаге 1 была ошибка timed out — начинайте отсюда: похоже, пакеты молча отбрасывает файрвол.
Ubuntu / Debian (ufw)
sudo ufw statusЕсли в списке нет разрешающего правила для SSH — добавьте его:
sudo ufw allow OpenSSHAlmaLinux / Rocky (firewalld)
sudo firewall-cmd --state
sudo firewall-cmd --list-servicesЕсли ssh нет среди разрешённых сервисов — добавьте:
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reloadЕсли меняли порт SSH — открывайте его отдельно, --add-service=ssh в этом случае не поможет:
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --reloadЕсли статус файрвола — inactive (ufw) или not running (firewalld), он ни при чём — переходите к следующему шагу. Подробный разбор правил и логики ufw — в статье «Настройка файрвола UFW».
Шаг 5. Проверьте, что служба sshd вообще запущена
Если файрвол ни при чём, а на Шаге 1 была ошибка refused — скорее всего, дело в самой службе. Проверить и исправить это можно только изнутри сервера — через консоль VNC (Шаг 2), поскольку по SSH вы туда как раз попасть не можете.
Проверьте статус:
# Ubuntu/Debian
systemctl status ssh
# AlmaLinux/Rocky Linux
systemctl status sshdЕсли статус не active (running) — запустите службу и включите автозапуск:
# Ubuntu/Debian
systemctl enable --now ssh
# AlmaLinux/Rocky Linux
systemctl enable --now sshdПроверьте, на каком порту она реально слушает:
ss -tlnp | grep sshПорт после двоеточия в выводе (например, 0.0.0.0:22) должен совпадать с тем, что вы указываете в ssh -p.
Если служба падает сразу после запуска — посмотрите лог:
# Ubuntu/Debian
journalctl -u ssh -n 50 --no-pager
# AlmaLinux/Rocky Linux
journalctl -u sshd -n 50 --no-pagerЧастая причина падения — синтаксическая ошибка в /etc/ssh/sshd_config после ручного редактирования; проверить конфигурацию без перезапуска можно командой sudo sshd -t (она же используется в статье «Усиление SSH»).
Шаг 6. Проверьте, не забанен ли ваш IP в fail2ban
Если недавно было несколько неудачных попыток входа подряд (например, вы сами ошиблись паролем, или к вашему IP-адресу через NAT привязаны другие устройства) — fail2ban мог забанить его автоматически.
Попасть на сервер, чтобы это проверить, можно через консоль VNC (Шаг 2) — она не идёт через сетевой стек и файрвол сервера, поэтому бан fail2ban на неё не действует. Либо подключитесь по SSH с другого IP-адреса (например, с мобильного интернета), если он у вас есть.
Проверьте статус jail'а sshd:
sudo fail2ban-client status sshdЕсли ваш IP есть в Banned IP list — снимите бан (замените 203.0.113.10 на свой адрес):
sudo fail2ban-client set sshd unbanip 203.0.113.10Шаг 7. Разберитесь с аутентификацией: ключ или пароль
Раз соединение дошло до этого этапа — сеть, файрвол и сама служба sshd уже ни при чём, остаются только учётные данные:
- `Permission denied (publickey,password)` — сервер принимает и ключ, и пароль, но ни один из тех, что вы предоставили, не подошёл.
- `Permission denied (publickey)` — сервер принимает только ключ (пароль отключён —
PasswordAuthentication no); без нужного ключа вход не получится, сколько бы раз вы ни вводили пароль.
Пароль. Убедитесь, что вводите пароль именно от учётной записи на сервере (root или ваш sudo-пользователь), а не пароль от панели VMmanager 6 или личного кабинета my.mhost.ee — это разные пароли. Забыли пароль root — смените его в VMmanager 6: карточка сервера → «⋮» → «Изменить пароль».
Не тот ключ. Если на компьютере несколько SSH-ключей, клиент может предложить не тот. Укажите нужный явно:
ssh -i ~/.ssh/id_ed25519 root@185.246.66.12Ключа нет на сервере. Через консоль VNC (Шаг 2) проверьте, что открытый ключ действительно записан на сервере:
cat ~/.ssh/authorized_keysСверьте построчно с ключом на своём компьютере (cat ~/.ssh/id_ed25519.pub). Если нужной строки нет — допишите её (см. шаг 2 статьи «Усиление SSH» — там разобрано и через ssh-copy-id, и вручную).
Права доступа. SSH придирчив к правам на файлы — и на сервере, и на клиенте: ~/.ssh должен быть 700, authorized_keys — 600 на сервере, приватный ключ на своём компьютере — тоже 600. Слишком открытые права — частая причина молчаливого отказа именно по ключу:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keysПароль отключён на сервере. Если рабочего ключа нет, а сервер отвечает Permission denied (publickey) без password в списке — вход по паролю на нём отключён (PasswordAuthentication no, см. статью «Усиление SSH») и не сработает, сколько угодно попыток. Временно верните его через консоль VNC (Шаг 2):
sudo nano /etc/ssh/sshd_configНайдите строку PasswordAuthentication no и замените на PasswordAuthentication yes, сохраните файл и перезапустите службу (команды — в Шаге 5 этой статьи). После этого зайдите по паролю и настройте ключ заново.
Что дальше
Как только доступ восстановлен, стоит снизить риск повторения: настройте вход по ключу и отключите пароль — статья «Усиление SSH»; защитите порт файрволом, если этого ещё не сделали, — «Настройка файрвола UFW»; добавьте автоматический бан за перебор пароля — «Fail2ban: защита от брутфорса». Общий чек-лист по остальным базовым настройкам безопасности — в статье «Чеклист базовой защиты VPS».