ssh соединение требует вечности для инициации, застрял на "залог: сеть"
Подключение к одному из моих серверов с использованием ssh требует более 20 секунд для инициации.
Это не относится к условиям LAN или WAN, так как соединение с самим собой происходит одинаково (ssh localhost). После того, как соединение наконец установлено, это очень быстро взаимодействует с сервером.
Использование -vvv показывает, что соединение застряло после произнесения "залог: сеть". На этом этапе аутентификация (здесь с использованием ключа) уже выполнена, как видно здесь:
...
debug1: Authentication succeeded (publickey).
Authenticated to myserver.mydomain.com ([xx.xx.xx.xx]:22).
debug1: channel 0: new [client-session]
debug2: channel 0: send open
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: pledge: network
(... застрял здесь на 15-25 секунд...)
debug1: client_input_global_request: rtype hostkeys-00@openssh.com want_reply 0
debug2: callback start
debug2: fd 3 setting TCP_NODELAY
debug2: client_session2_setup: id 0
...
Сервер Ubuntu 16.04. Это уже случалось со мной в прошлом на другом сервере (был Ubuntu 12.04), Nerver нашел решение, и проблема исчезла через некоторое время...
sshd_config - это стандартная версия, предоставляемая Ubuntu.
Пока что я попробовал:
- используя -o GSSAPIAuthentication=no в команде ssh
- используя пароль вместо ключа
- используя UsePrivilegeSeparation no вместо yes, в sshd_config
14 ответов
Это, вероятно, проблема с D-Bus
а также systemd
, Если dbus
перезапуск службы по какой-то причине, вам также нужно будет перезапустить systemd-logind
,
Вы можете проверить, является ли это проблемой, открыв журнал демона ssh (в Ubuntu это должно быть /var/log/auth.log
) и проверьте, есть ли в нем следующие строки:
sshd[2721]: pam_systemd(sshd:session): Failed to create session: Connection timed out
Если да, просто перезагрузите systemd-logind
оказание услуг:
systemctl restart systemd-logind
У меня была такая же проблема на CentOS 7, потому что messagebus
был перезапущен (вот как D-Bus
сервис называется на CentOS).
Нашел ответ:
изменил UsePAM с да на нет в файле sshd_config
После перезапуска службы ssh соединение теперь происходит непосредственно с сервером. На этом сервере PAM связан с ldap, поэтому, возможно, это и есть причина, даже если здесь я подключаюсь к пользователю, объявленному на самом сервере, а не к LDAP.
Что ж, это скорее способ обойти проблему, а не решение... У меня другие серверы настроены так же, как и эта проблема.
Надеюсь, что это может помочь кому-то...
Это произошло на двух из моих серверов Fedora 25 и было связано с множеством неудачных попыток входа по SSH.
(Общие предложения по использованию GSSAPIAuthentication=no
а также UseDNS=no
или перезапуск systemd-logind
, без разницы.)
На этих серверах /etc/pam.d/postlogin
содержит:
session optional pam_lastlog.so silent noupdate showfailed
Справочная страница для pam_lastlog
объясняет, что showfailed
Вариант будет:
Показать количество неудачных попыток входа в систему и дату последней неудачной попытки от btmp.
На этих серверах /var/log/btmp
файлы были огромными из-за многих неудачных попыток входа в систему. btmp
файлы журнала тоже не вращались.
Я установил logrotate
пакет, чтобы гарантировать, что файлы журнала будут вращаться в будущем. (На Fedora конфигурация, которая поставляется с logrotate
обрабатывает вращение /var/log/btmp
.)
Я также удалил огромный btmp
лог-файлы; Как только я это сделал, подключение к серверам снова стало мгновенным.
На Ubuntu 16+ я каждый раз видел
ssh -v XXX@YYY
торможение в
pledge: network
это можно исправить, следуя инструкциям, которые я нашел здесь. Подробное руководство по исправлению медленных входов в систему по SSH. В частности, задержку вызывает дополнительный модуль PAM, который, по всей видимости, не нужен.
В
/etc/pam.d/common-session
на машине, для которой вы видите медленный вход (т. е. на сервере). Закомментируйте строку
session optional pam_systemd.so
. Это должно немедленно решить проблему.
Это позволяет избежать полного выключения PAM, что приводит к повреждению входа в систему с паролями.
Проблема для меня (Ubuntu 19.10) заключалась в том, что мои:
/etc/pam.d/sshd
# Print the message of the day upon successful login.
# This includes a dynamically generated part from /run/motd.dynamic
# and a static (admin-editable) part from /etc/motd.
session optional pam_motd.so motd=/run/motd.dynamic
session optional pam_motd.so noupdate
Комментируя настройки motd, я сразу понял.
Для меня эта проблема вызвана большими (сотни МБ) btmp
файл. Этот файл регистрирует попытки входа в систему. Когда люди пытаются взломать ваш пароль, этот файл может быть большим и вызывать задержки в "pledge: network"
фаза.
Попробуйте очистить файл журнала
echo "" > /var/log/btmp
и посмотрим, поможет ли это.
Для меня решение было добавить
UseDNS no
к /etc/ssh/sshd_config
а потом конечно service ssh restart
(на нашем сервере Debian/Jessie). Ничего больше...
до:
ssh git@git.*****.de true 0.03s user 0.01s system 0% cpu 13.440 total
ssh git@git.*****.de true 0.03s user 0.01s system 0% cpu 20.990 total
ssh git@git.*****.de true 0.03s user 0.02s system 0% cpu 31.114 total
ssh git@git.*****.de true 0.03s user 0.01s system 0% cpu 25.898 total
после:
ssh git@git.*****.de true 0.03s user 0.02s system 5% cpu 0.832 total
ssh git@git.*****.de true 0.03s user 0.01s system 7% cpu 0.523 total
ssh git@git.*****.de true 0.03s user 0.01s system 7% cpu 0.574 total
В моем случае причиной был сбой rsyslogd. Я узнал об этом, потому что больше не было сообщений журнала, например, в /var/log/syslog или /var/log/mail.log
Так service rsyslog restart
решил проблему для нас.
В моем случае это была проблема с брандмауэром после обновления до Debian 11.
Решено добавлением:
iptables -t filter -A INPUT -i lo -j ACCEPT
В начале скрипта брандмауэра.
В моем случае это связано с тем, что журналов слишком много. Вы можете проверить, в порядке ли вы, выполнив эту команду:
sudo journalctl --list-boots
Если требуется время, чтобы дать результаты и дать много строк результата, тогда вы в деле.
Чтобы обрезать журналы, сделайте следующее:
sudo journalctl --vacuum-time 2d
Он удалит журналы старше двух дней.
Если вы используете NIS/YP, убедитесь, что nscd запущен. В моем случае при входе по ssh я получал следующее.
systemd-logind[30061]: do_ypcall: clnt_call: RPC: невозможно отправить; errno = Операция не разрешена
Согласно https://github.com/systemd/systemd/issues/7074, nscd должен быть запущен для обеспечения бесперебойной работы.
После того, как я запустил nscd (который не работал после обновления Ubuntu), входящие сеансы ssh стали намного быстрее.
У меня возникла та же проблема, и мы настроили службу SSSD для входа в AD.
Остановка службы SSSD решила проблему для меня.
Я заметил следующую строку в моем отладочном отзыве:
Control socket connect(/var/lib/jenkins/.ssh/USER@HOST:22): Permission denied
Какой файл принадлежал root:root
пока я jenkins
, Удаление этого файла решило мои проблемы.
В моем случае причиной был сбой rsyslogd. Я обнаружил это, потому что в /var/log/secure больше не было записей журнала.
Итак, я перезапустил службу rsyslog, перезапуск решил проблему для нас.