Linux ETIMEDOUTСредняя

Исправляем SSH Connection Timed Out: полный гайд (2026)

Разберём причины сбоя подключения по SSH и устраним ошибку таймаута с помощью проверки сети, фаервола и настроек клиента. Вы быстро вернёте стабильный доступ к серверу.

Обновлено 4 апреля 2026 г.
10-15 мин
Низкая
FixPedia Team
Применимо к:OpenSSH 8.0+Ubuntu 22.04 / 24.04Debian 12RHEL 9 / AlmaLinux 9

Что означает ошибка Connection timed out

При попытке подключиться к удалённому серверу через OpenSSH вы видите сообщение: ssh: connect to host <IP> port 22: Connection timed out. Это не ошибка аутентификации или проблем с ключами. Система сообщает, что отправленные TCP-пакеты (SYN) не получили ответа (SYN-ACK) в установленное время. Клиент просто устал ждать и принудительно разрывает соединение. Ошибка возникает на самом раннем этапе установления TCP-сессии, ещё до начала обмена ключами SSH.

Причины возникновения

  • Сервер выключен, перезагружается или зависла служба sshd.
  • Входящие соединения на порт 22 блокируются фаерволом сервера (UFW, firewalld, iptables) или облачной группой безопасности.
  • Локальный фаервол или антивирус на вашей машине блокирует исходящий трафик по порту 22.
  • Некорректный IP-адрес или доменное имя, указывающее на другой, недоступный хост.
  • Проблемы с маршрутизацией у интернет-провайдера или сбой работы NAT-шлюза.
  • Слишком строгие настройки таймаута в конфигурации SSH-клиента по умолчанию.

Способы решения

Способ 1: Проверка доступности хоста и сетевого соединения

Начните с базовой диагностики. Убедитесь, что сервер физически доступен в сети.

# Проверка базовой связности (может быть отключён ICMP на сервере)
ping -c 4 192.168.1.100

Если ping не проходит, проверьте IP-адрес в панели управления облачным провайдером или у хостера. Далее проверьте открыт ли именно порт 22:

# Использование netcat для быстрой проверки TCP-порта
nc -zv 192.168.1.100 22

Успешный вывод: Connection to 192.168.1.100 22 port [tcp/ssh] succeeded!. Если команда зависает или сразу пишет Connection timed out, переходите к следующим шагам.

Способ 2: Настройка правил фаервола

Чаще всего порт закрыт на уровне сервера. Настройте правила в зависимости от вашей ОС. Для Ubuntu/Debian (UFW):

sudo ufw allow 22/tcp
sudo ufw reload
sudo ufw status

Для RHEL/CentOS/AlmaLinux (firewalld):

sudo firewall-cmd --permanent --add-port=22/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --list-ports

💡 Совет: Если вы используете облачные платформы (AWS, Google Cloud, Azure, Hetzner), проверьте настройки Security Group или Network ACL в веб-панели управления. Правила фаервола внутри ОС не сработают, если внешний блокирующий фильтр их отсекает.

Способ 3: Увеличение таймаута в конфигурации SSH-клиента

Иногда сеть работает медленно из-за высокой задержки, а стандартный таймаут OpenSSH слишком короткий. Вы можете увеличить время ожидания глобально или для конкретного хоста. Откройте файл конфигурации клиента:

nano ~/.ssh/config

Добавьте следующие строки:

Host *
    ConnectTimeout 30
    ServerAliveInterval 15
    ServerAliveCountMax 4

ConnectTimeout задаёт время ожидания установки TCP-соединения в секундах. ServerAliveInterval и ServerAliveCountMax помогают поддерживать активную сессию при нестабильном интернете. Сохраните файл (Ctrl+O), закройте редактор и переподключитесь.

Способ 4: Проверка маршрутизации и DNS-резолвинга

Если вы подключаетесь по доменному имени, убедитесь, что оно преобразуется в правильный IP:

dig +short example.com

Если возвращается несколько адресов или неверный, очистите локальный кэш DNS или используйте прямой IP в команде ssh. Для анализа потери пакетов на пути к серверу используйте утилиту mtr:

mtr -n -c 50 192.168.1.100

Высокий процент потерь (Loss%) на промежуточных узлах указывает на проблему провайдера. В таком случае попробуйте подключиться через мобильный интернет (режим модема) или обратитесь в поддержку хостинга с результатами трассировки.

Профилактика

Чтобы избежать повторения сбоев, всегда настраивайте автоматическое поддержание сессии через параметры ServerAliveInterval и ServerAliveCountMax. Регулярно проверяйте статус службы sshd командой systemctl status sshd. Для критичных серверов используйте резервный доступ: аварийную консоль провайдера (VNC/IPMI), WireGuard-туннель или альтернативный порт SSH (например, 2222), который реже сканируется ботами и реже попадает в базовые блокировки провайдеров. Документируйте изменения в фаерволе в едином репозитории инфраструктуры (Ansible, Terraform), чтобы быстро откатить ошибочные правила.

Часто задаваемые вопросы

Почему появляется ошибка Connection timed out при подключении по SSH?
Как проверить, доступен ли порт 22 на удалённом сервере?
Можно ли увеличить таймаут ожидания подключения в SSH-клиенте?

Полезное

Проверка доступности хоста и сетевого соединения
Настройка правил фаервола (UFW/iptables)
Настройка таймаута в SSH-клиенте
Проверка маршрутизации и DNS

Эта статья помогла вам решить проблему?