проблемы с SSH соединением: иногда успешное соединение / иногда тайм-аут / иногда зависает

Вопрос или проблема

У меня проблема с подключением по SSH. Я использую свой клиент Ubuntu 16.04 для подключения к серверу Centos7. Я использую пары ключей SSH для установления соединений. Но тогда происходит много странных вещей: иногда я могу подключиться к серверу без проблем, иногда возникает ошибка времени ожидания. Иногда сервер просто не отвечает на ввод с клавиатуры. Сначала я думал, что это связано с сервером. Но я протестировал подключение на Windows 10, используя PuTTY, и всё прошло без проблем. Также я столкнулся с этой проблемой на серверах AWS. Поэтому я думаю, что это связано с моим клиентом Ubuntu. Потому что через PuTTY всё проходит отлично.

Также: я делал несколько неудачных попыток подключиться к серверу. Но по команде top (используя Windows Server) я вижу висящие соединения.

вставьте описание изображения здесь

Мои настройки подключения, взятые из /etc/ssh/ssh_config и ~/.ssh/config (я удалил закомментированные строки, начинающиеся с #)

Host *
    HashKnownHosts yes
    GSSAPIAuthentication yes
    GSSAPIDelegateCredentials no
    KeepAlive yes
    TCPKeepAlive yes
    ServerAliveInterval 60
    ServerAliveCountMax 5
    GSSAPIAuthentication no

Вот неудачная попытка подключения

debug1: Аутентификация прошла успешно (publickey).
Аутентифицирован на 91.92.128.50 ([91.92.128.50]:22).
debug1: канал 0: новая [клиентская сессия]
debug3: ssh_session2_open: channel_new: 0
debug2: канал 0: отправить открытие
debug3: отправить пакет: тип 90
debug1: Запрос [email protected]
debug3: отправить пакет: тип 80
debug1: Вход в интерактивную сессию.
debug1: обещание: сеть
debug3: получить пакет: тип 80
debug1: client_input_global_request: rtype [email protected] want_reply 0
debug3: получить пакет: тип 91
debug2: запуск обратного вызова
debug2: fd 3 установка TCP_NODELAY
debug3: ssh_packet_set_tos: установить IP_TOS 0x10
debug2: client_session2_setup: id 0
debug2: канал 0: запрос pty-req подтверждение 1
debug3: отправить пакет: тип 98
debug2: канал 0: запрос оболочки подтверждение 1
debug3: отправить пакет: тип 98
debug2: обратный вызов завершен
debug2: канал 0: открытие подтверждено rwindow 0 rmax 32768
debug3: отправить пакет: тип 80
debug3: отправить пакет: тип 80
debug3: отправить пакет: тип 80
debug3: отправить пакет: тип 80
debug3: отправить пакет: тип 80
Время ожидания, сервер 91.92.128.50 не отвечает.

Иногда, когда моя сессия зависает и я нахожусь на сервере, я получаю эти уведомления в терминале. (Я подключился с опцией -vvv)

[aeliv@v20920 ~]$ debug3: отправить пакет: тип 80
debug3: получить пакет: тип 82

[aeliv@v20920 ~]$ 
[aeliv@v20920 ~]$ debug3: отправить пакет: тип 80
debug3: получить пакет: тип 82
debug3: отправить пакет: тип 80
debug3: отправить пакет: тип 80

Если это сработает, все заслуги @Strahinja Kustudic, и вы можете перейти по ссылке https://serverfault.com/a/794789/569013 для получения более подробной информации. Вкратце, вы можете попробовать systemctl restart systemd-logind, чтобы решить проблему.

Ответ или решение

Проблемы с SSH-соединением на вашем Ubuntu-клиенте могут возникать по множеству причин. Ниже рассмотрим наиболее вероятные причины возникновения таймаутов и зависаний, а также способы решения данных проблем.

1. Анализ ситуации

На основе вашего описания, проблема проявляется непостоянно: иногда вы соединяетесь без проблем, а иногда получаете ошибки таймаута или зависаете в интерактивной сессии. Учитывая, что на Windows-клиенте через PuTTY соединение работает без проблем, проблема, скорее всего, связана с конфигурацией или состоянием вашего Ubuntu-клиента.

2. Возможные причины

a. Сетевые проблемы

  • Нестабильное соединение: Осмотрите ваше интернет-соединение. Проблемы со связью могут привести к потере пакетов и нарушению установленных сессий.
  • Файрволы и NAT: Убедитесь, что настройки локального (или внешнего) файрвола (например, UFW или iptables) не блокируют исходящие соединения на порт SSH (обычно 22). Если вы находитесь за маршрутизатором с функцией NAT, это может тоже вызывать проблемы.

b. Конфигурация SSH

  • Параметры KeepAlive: Ваша конфигурация SSH (/etc/ssh/ssh_config и ~/.ssh/config) содержит параметры, отвечающие за поддержание соединения. Убедитесь, что они корректны. Например, у вас несколько раз включена опция GSSAPIAuthentication, что может быть неправильно:
    GSSAPIAuthentication yes
    GSSAPIAuthentication no

    Это может вызвать неполадки. Оставьте только один из параметров, чтобы не допустить конфликтов.

c. Проблемы на стороне сервера

  • Перегрузка сервера: При использовании команды top на сервере вы можете заметить высокую загрузку процессов, что может привести к зависаниям и тайм-аутам в открытых сессиях SSH. Проверьте системные процессы и загрузку ресурсов.
  • Сетевые ограничения: Некоторые серверы могут иметь ограничения по количеству одновременно установленных соединений. Это приводит к тому, что новые соединения просто не могут быть установлены.

3. Рекомендации по устранению

  1. Диагностика сети:

    • Используйте команды ping и traceroute, чтобы протестировать соединение с сервером. Выявите возможные проблемы на уровне сети.
  2. Проверка конфигурации SSH:

    • Убедитесь, что ваши настройки в ssh_config оптимальны. Попробуйте изменить ServerAliveInterval на меньшее значение, например 30, чтобы быстрее выявлять проблемы с соединением.
    • Убедитесь, что в конфигурации не остается конфликтующих параметров.
  3. Перезапуск системных служб:

    • Как вы уже упомянули, перезапуск службы systemd-logind может помочь. Используйте команду:
      sudo systemctl restart systemd-logind
  4. Изоляция проблемы:

    • Попробуйте подключаться к другим серверам, чтобы определить, возникает ли проблема только с конкретными адресами или с любыми, чтобы исключить сетевую проблему.
  5. Альтернативные клиенты:

    • Хотя вы уже сравнили с PuTTY, вы также можете попробовать другие SSH-клиенты на Ubuntu, такие как Termius или MobaXterm, и посмотреть, будет ли результат отличаться.

4. Заключение

Проблемы с SSH могут возникать из-за множества факторов, начиная от сетевых задержек и заканчивая проблемами с конфигурацией вашего клиента. Следуя предложенным шагам, вы сможете диагностировать и, возможно, устранить причину нестабильной работы SSH-соединений на вашем Ubuntu-клиенте. Если проблема сохраняется, возможно, стоит рассмотреть вариант технической поддержки вашего провайдера или поднять вопрос на специализированных форумах.

Оцените материал
Добавить комментарий

Капча загружается...