Вопрос или проблема
У меня проблема с подключением по 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. Рекомендации по устранению
-
Диагностика сети:
- Используйте команды
ping
иtraceroute
, чтобы протестировать соединение с сервером. Выявите возможные проблемы на уровне сети.
- Используйте команды
-
Проверка конфигурации SSH:
- Убедитесь, что ваши настройки в
ssh_config
оптимальны. Попробуйте изменитьServerAliveInterval
на меньшее значение, например 30, чтобы быстрее выявлять проблемы с соединением. - Убедитесь, что в конфигурации не остается конфликтующих параметров.
- Убедитесь, что ваши настройки в
-
Перезапуск системных служб:
- Как вы уже упомянули, перезапуск службы
systemd-logind
может помочь. Используйте команду:sudo systemctl restart systemd-logind
- Как вы уже упомянули, перезапуск службы
-
Изоляция проблемы:
- Попробуйте подключаться к другим серверам, чтобы определить, возникает ли проблема только с конкретными адресами или с любыми, чтобы исключить сетевую проблему.
-
Альтернативные клиенты:
- Хотя вы уже сравнили с PuTTY, вы также можете попробовать другие SSH-клиенты на Ubuntu, такие как
Termius
илиMobaXterm
, и посмотреть, будет ли результат отличаться.
- Хотя вы уже сравнили с PuTTY, вы также можете попробовать другие SSH-клиенты на Ubuntu, такие как
4. Заключение
Проблемы с SSH могут возникать из-за множества факторов, начиная от сетевых задержек и заканчивая проблемами с конфигурацией вашего клиента. Следуя предложенным шагам, вы сможете диагностировать и, возможно, устранить причину нестабильной работы SSH-соединений на вашем Ubuntu-клиенте. Если проблема сохраняется, возможно, стоит рассмотреть вариант технической поддержки вашего провайдера или поднять вопрос на специализированных форумах.