SSH Linux, OpenSSH client/server

SSH подключение зависает перед запросом пароля

  • Обновлено
  • Чтение ≈ 3 минуты
  • Нужны права администратора

Краткий ответ

Клиент SSH устанавливает TCP-соединение, но долго не показывает приглашение пароля: проблема может относиться к DNS, GSSAPI, серверным проверкам пользователя или задержке аутентификации.

В этой статье
  1. Как распознать проблему и где применимы действия
  2. Возможные причины и диагностические признаки
  3. Пошаговая диагностика и исправление
  4. Как проверить, что проблема действительно устранена
  5. Если результат не получен

#Как распознать проблему и где применимы действия

Клиент SSH устанавливает TCP-соединение, но долго не показывает приглашение пароля: проблема может относиться к DNS, GSSAPI, серверным проверкам пользователя или задержке аутентификации. Перед выполнением определите название программы, редакцию Linux и управляющий сервис. Значения примеров в командах не являются готовой конфигурацией вашего устройства.

#Возможные причины и диагностические признаки

Возможная причинаКак узнатьЧто делать
Задержка до баннера сервераssh -vvv останавливается на ожидании remote protocol versionПроверить нагрузку сервера и sshd-журнал
Клиент перебирает методы аутентификацииВ -vvv много попыток ключей или GSSAPIПроверить порядок методов по настройкам
Сервер не отвечает на проверку учётной записиПосле SSH2_MSG_SERVICE_ACCEPT дальнейшего ответа нетСмотреть журнал sshd, PAM и DNS сервера

#Пошаговая диагностика и исправление

  1. Шаг 1. Откройте второй терминал на клиентеНе закрывайте рабочий сеанс. Выполните диагностическое подключение с -vvv и ConnectTimeout=8; замените пользователя и хост. Посмотрите последнюю строку до зависания. Важно: параметр ConnectTimeout не ограничивает всю аутентификацию.
  2. Терминал Linux на сервере/клиенте, указанном в шаге
    Linux · Терминал (Bash)Команда
    Терминал Linux на сервере/клиенте, указанном в шаге. Обычно достаточно прав пользователя; имя.service, пути, адрес server.example.org, имена пользователей и другие демонстрационные значения необходимо заменить фактическими. После команды сравните результат с описанием шага; при ошибке остановитесь и выясните её причину.
    ssh -vvv -o ConnectTimeout=8 пользователь@server.example.org
  1. Шаг 2. Уточните адрес, куда подключается клиентКоманда ssh -G показывает итоговые настройки из ~/.ssh/config, включая hostname, port, user и методы входа. Если hostname отличается от ожидаемого, исправляйте конфигурацию клиента.
  2. Терминал Linux на сервере/клиенте, указанном в шаге
    Linux · Терминал (Bash)Команда
    Терминал Linux на сервере/клиенте, указанном в шаге. Обычно достаточно прав пользователя; имя.service, пути, адрес server.example.org, имена пользователей и другие демонстрационные значения необходимо заменить фактическими. После команды сравните результат с описанием шага; при ошибке остановитесь и выясните её причину.
    ssh -G server.example.org | grep -Ei '^(hostname|port|user|gssapiauthentication|identityfile) '
  1. Шаг 3. Проверьте DNS и доступность адресаНа клиенте getent использует системное разрешение имён. Если адресов нет, устраните DNS; если адрес неожиданный, проверьте локальные алиасы. Порт SSH проверяйте отдельно.
    Linux · Терминал (Bash)Команда
    Терминал Linux на сервере/клиенте, указанном в шаге. Обычно достаточно прав пользователя; имя.service, пути, адрес server.example.org, имена пользователей и другие демонстрационные значения необходимо заменить фактическими. После команды сравните результат с описанием шага; при ошибке остановитесь и выясните её причину.
    getent ahosts server.example.org
  1. Шаг 4. Сопоставьте журнал на сервереЕсли есть доступ через консоль или существующий сеанс, откройте журнал sshd. В Debian/Ubuntu служба часто ssh.service; в RHEL-подобных — sshd.service. Не перезапускайте SSH во время диагностики. Команды sudo или sudoedit выполняются с полномочиями администратора; если sudo не установлен, используйте разрешённую административную сессию.
  2. Терминал Linux на сервере/клиенте, указанном в шаге
    Linux · Терминал (Bash)КомандаНужен sudo
    Терминал Linux на сервере/клиенте, указанном в шаге. Нужны права администратора; имя.service, пути, адрес server.example.org, имена пользователей и другие демонстрационные значения необходимо заменить фактическими. После команды сравните результат с описанием шага; при ошибке остановитесь и выясните её причину.
    sudo journalctl -b -u ssh.service -u sshd.service -n 100 --no-pager
  1. Шаг 5. Проверьте параметры сервера без исправленийНа сервере команда -T выводит действующую конфигурацию; при Match для точного пользователя нужен дополнительный -C user=...,addr=...,host=.... Не передавайте весь вывод в открытый чат. Команды sudo или sudoedit выполняются с полномочиями администратора; если sudo не установлен, используйте разрешённую административную сессию.
  2. Терминал Linux на сервере/клиенте, указанном в шаге
    Linux · Терминал (Bash)КомандаНужен sudo
    Терминал Linux на сервере/клиенте, указанном в шаге. Нужны права администратора; имя.service, пути, адрес server.example.org, имена пользователей и другие демонстрационные значения необходимо заменить фактическими. После команды сравните результат с описанием шага; при ошибке остановитесь и выясните её причину.
    sudo /usr/sbin/sshd -T | grep -Ei '^(usedns|gssapiauthentication|passwordauthentication|pubkeyauthentication|loglevel) '
  1. Шаг 6. Проведите ограниченное сравнение с GSSAPIЕсли журнал указывает задержку именно GSSAPI, попробуйте только один тестовый сеанс с отключением GSSAPI на клиенте. Это не меняет sshd_config и не снижает парольную защиту сервера. Если разницы нет, вернитесь к серверному журналу.
  2. Терминал Linux на сервере/клиенте, указанном в шаге
    Linux · Терминал (Bash)Команда
    Терминал Linux на сервере/клиенте, указанном в шаге. Обычно достаточно прав пользователя; имя.service, пути, адрес server.example.org, имена пользователей и другие демонстрационные значения необходимо заменить фактическими. После команды сравните результат с описанием шага; при ошибке остановитесь и выясните её причину.
    ssh -vv -o GSSAPIAuthentication=no пользователь@server.example.org

#Как проверить, что проблема действительно устранена

Если после успешного TCP-соединения пароль не появляется, запишите точную последнюю строку -vvv и серверное время. Не отключайте PAM, проверки ключей и защиту SSH ради ускорения входа.

#Если результат не получен

Вернитесь к самому раннему отличающемуся результату диагностики и проверьте точный текст ошибки, текущую загрузку и фактическую версию программы. Не повторяйте опасную команду с другими правами наугад. Если это рабочий сервер, передайте администратору обезличенные отрывки журнала за момент сбоя и уже выполненные действия.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.