Документация
Решение проблем

Не могу подключиться по SSH — что делать

Пошаговый чек-лист: firewall, sshd, известные хосты, ключи, порты.

5 мин

Не могу подключиться по SSH — чек-лист

Сервер работает, но ssh root@<IP> висит или ругается. Пройдите по списку сверху вниз — 9 из 10 случаев решаются за 5 минут.

Шаг 1. Сервер вообще жив?

Из панели elistrax → Серверы → графики CPU/сеть. Если графики идут — сервер работает. Если плоские — VPS завис или выключен.

Из консоли:

ping <IP>
  • Отвечает → сеть работает, проблема в SSH.
  • Destination Host Unreachable → сеть/маршрут. Идите в поддержку.
  • Request timeout → возможно, ICMP заблокирован firewall-ом, но SSH может работать. Дальше проверяйте порт.

Шаг 2. Порт 22 открыт?

nc -vz <IP> 22
# Connection to <IP> 22 port [tcp/ssh] succeeded!

Или через telnet:

telnet <IP> 22
# SSH-2.0-OpenSSH_9.x
  • Успех → sshd отвечает, проблема в аутентификации.
  • Connection refused → sshd не запущен или слушает другой порт.
  • Operation timed out → firewall блокирует. Это или ваш локальный, или на VPS, или у провайдера сети.

Шаг 3. sshd работает?

Если порт refused — через VNC-console или rescue mode:

systemctl status sshd
ss -tlnp | grep sshd

Если sshd не запущен:

systemctl start sshd
systemctl enable sshd

Если слушает нестандартный порт (например, 2222) — подключайтесь так:

ssh -p 2222 root@<IP>

Шаг 4. Firewall

На VPS (через VNC):

# ufw
ufw status
# должно быть: 22/tcp ALLOW

# iptables
iptables -L -n | grep -E ':22|dpt:22'

# nftables
nft list ruleset | grep -E 'tcp dport 22'

Если правила нет — временно откройте:

ufw allow 22/tcp
# или
iptables -I INPUT -p tcp --dport 22 -j ACCEPT

Шаг 5. fail2ban / вас забанили

Частая причина — 5 неверных паролей подряд, и ваш IP в бане на час:

fail2ban-client status sshd
fail2ban-client unban <ВАШ_IP>

Или временно:

systemctl stop fail2ban

Шаг 6. SSH-ключ не работает

ssh -v root@<IP>
# Смотрите строку "Offering public key: ..."
# Если "Server refused our key" — ключ на сервере не тот

На сервере (через VNC/rescue):

cat /root/.ssh/authorized_keys
# Ваш публичный ключ должен там быть

Проверьте права — критично:

chmod 700 /root/.ssh
chmod 600 /root/.ssh/authorized_keys
chown -R root:root /root/.ssh

Проверьте sshd_config:

grep -E '^(PubkeyAuthentication|PermitRootLogin|AuthorizedKeysFile)' /etc/ssh/sshd_config

Должно быть:

PubkeyAuthentication yes
PermitRootLogin prohibit-password
AuthorizedKeysFile .ssh/authorized_keys

Шаг 7. Host key verification failed

Изменился ключ хоста (после переустановки, миграции):

ssh-keygen -R <IP>
ssh root@<IP>
# подтвердите новый fingerprint

Шаг 8. Too many authentication failures

SSH-агент шлёт все ваши ключи подряд, сервер отвергает после 6-й попытки. Форсируйте нужный ключ:

ssh -i ~/.ssh/id_ed25519_myserver -o IdentitiesOnly=yes root@<IP>

Шаг 9. Ничего не помогает — rescue mode

Загрузитесь в rescue через панель. Оттуда можно смонтировать диск, поправить sshd_config, authorized_keys, hosts.deny, iptables.

Подробнее: Сброс root-пароля через rescue.

Что дальше