Долгое время ожидания при входе в систему
Когда я вхожу в систему на моем сервере, я получаю это:
No mail.
Last login: Fri Nov 5 14:22:45 2010...
тогда я должен ждать 5 секунд, а затем готов...
wolfy@ubuntu-server:~$
Это время ожидания нормальное или я должен что-то сделать, чтобы "починить" это?
10 ответов
Обычно это результат pam_motd
восстанавливающий /etc/motd
файл. Вы можете проверить отдельные сценарии в /etc/update-motd.d
чтобы увидеть, если что-то особенно медленно.
У меня такие же проблемы с 10.04 (LTS).
Когда я запускаю свой SSH с -vvv
умирает при:
debug1: Entering interactive session.
Расширяя этот ответ.
Мне удалось перезагрузить сервер удаленно и включил журнал отладки. Также использовал эту возможность, чтобы оставаться в системе и наблюдать за другими попытками входа. Вот что происходит. Клиент подключается и авторизуется и зависает в сообщении выше.
На сервере список процессов показывает это:
root 835 0.0 0.1 11476 3348 ? Ss 13:39 0:00 sshd: till [priv]
root 840 0.0 0.0 4804 1124 ? S 13:39 0:00 /bin/sh -c /usr/bin/env -i PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin /bin/run-parts --lsbsysinit /etc/update-motd.d
root 841 0.0 0.0 4728 1108 ? S 13:39 0:00 /bin/run-parts --lsbsysinit /etc/update-motd.d
root 854 0.0 0.0 4804 1144 ? S 13:39 0:00 /bin/sh /etc/update-motd.d/50-landscape-sysinfo
root 861 0.2 0.5 15388 9248 ? S 13:39 0:00 /usr/bin/python /usr/bin/landscape-sysinfo
root 863 0.0 0.0 0 0 ? Z 13:39 0:00 [who] <defunct>
Я могу выполнить /usr/bin/python /usr/bin/landscape-sysinfo
просто хорошо, когда я вошел в систему, но по какой-то причине я не могу понять, почему это останавливает процесс входа в систему. Когда я завершаю процесс, вход в систему продолжается до приглашения и проходит успешно.
Это не проблема ssh (d), это больше связано с update-motd
и ландшафт. Я удалил update-motd
пакет, но кажется, что /etc/update-motd
каталог сохраняется, а сценарии все еще выполняются, что приводит к зависанию процесса.
Отладка этого дальше:
Оказывается /etc/update-motd.d/
каталог на самом деле не принадлежит пакету update-motd
Похоже, что он запускается аутентификацией pam через sshd.
Я, кажется, прибил это!
Отключено pam_motd в следующих файлах:
- /etc/pam.d/sshd
- /etc/pam.d/login
Еще один:
apt-get purge landscape-client landscape-common
Это, кажется, помогает в определенной степени. Тем не менее, он только удаляет нарушающий сценарий в /etc/update-motd.d/
и не удаляет все скрипты в этом каталоге и не избавляется pam_motd
или.
В общем, я не нашел способа отключить pam_motd
полностью потому, что кажется, что бы он ни делал - это в некоторой степени замедляет процесс входа в систему. Он не блокируется как скрипт в landscape-common
, но это медленнее.
Сообщение об ошибке по этому вопросу:
Обходные пути оттуда:
Вы правы в том, что возможность входа в систему важнее, чем представление motd. Если это поведение является проблемой для вас, вы можете отключить его несколькими способами:
- закомментируйте строку 'pam_motd' в
/etc/pam.d/sshd
если вы не хотите отображать MOTD.- удалить содержимое
/etc/update-motd.d
каталог.- chmod -x скрипты в
/etc/update-motd.d
что ты не хочешь бежать.
Сам наконец нашел решение:
sudo apt-get remove landscape-client landscape-common
- строка комментария
session optional pam_motd.so
в/etc/pam.d/login
а также/etc/pam.d/sshd
Теперь логин МГНОВЕННО!
Из вашего описания это больше похоже на проблемы с сетью. Для диагностики:
- Запустите ssh с параметром -v, чтобы быть подробным.
- Попробуйте запустить ping к SSH-серверу, к которому вы подключаетесь, и посмотрите, не зависает ли он одновременно.
- Попробуйте другой вид переноса на тот же сервер. Например, wget с параметром --limit-rate извлекает файл через HTTP и требует достаточно много времени, чтобы вызвать "зависание".
- Посмотрите, зависает ли он только в режиме ожидания или даже если вы что-то делаете в данный момент. Если он зависает во время простоя, диагностика -v, вероятно, скажет вам об этом, и в этом случае может помочь совет использовать keepalive (ssh -o "TCPKeepAlive yes")
Если вы можете подключиться нормально с Windows и PuTTY, это, вероятно, не проблема на стороне сервера.
Если PermitEmptyPassword
а также UsePAM
Если оба сервера включены, сервер OpenSSH всегда пытается выполнить аутентификацию с пустым паролем, что свидетельствует о том, что для рассматриваемой учетной записи аутентификация не требуется. Он делает это, как только начинается процесс аутентификации, в обоих протоколах, а не в ответ на любой "реальный" запрос аутентификации от клиента. OpenSSH разрешит такой доступ, только если флаг sshd_config PermitEmptyPassword
установлен; к сожалению, при написании кода он в любом случае выполняет проверку пароля и, таким образом, выдает PAM как сбой.
Итак: отключить PermitEmptyPassword
или же UsePAM
, но помните: без PAM вы не сможете войти без ключа.
Я думаю, что когда вы входите в систему, Ubuntu выполняет один или несколько из этих файлов:
/etc/bash.bashrc
~/.bash_profile
~/.bashrc
Вы могли видеть, что в них, и, возможно, даже попытаться выполнить их, чтобы увидеть, что занимает так много времени.
По моему ограниченному опыту, когда работает putty, но Linux, в данном случае Ubuntu, этого не делает, он обычно сохраняется. Проблемы с сетью или сервером могут повлиять на обе клиентские ОС.
Вы можете использовать вышеупомянутый параметр keep alive в командной строке, но набирать его довольно утомительно.
Проще редактировать несколько файлов конфигурации.
Если у вас есть root access
и хотите включить его автоматически для всех пользователей, отредактируйте /etc/ssh/ssh_config
, добавлять
KeepAlive yes
ServerAliveInterval 120
Если у вас нет root-прав или вы хотите включить его для одного пользователя, отредактируйте ~/.ssh/config
и добавьте те же две строки.
Проверьте системные журналы в /var/log, вы можете найти сообщение с соответствующей ошибкой / тайм-аутом.
Возможно, вы захотите попытаться отслеживать запущенные процессы, когда вы входите на сервер с уже подключенного соединения (или другой консоли). Существует возможность определить, какие процессы наиболее активны или используют больше всего процессоров в то время.
Ниже приведен один из возможных методов:
- Попробуйте войти на другой консоли.
- Бежать
top
там, чтобы увидеть, что происходит. - Войдите на 1-ую консоль.
Обратите внимание, что если задержка не вызвана какими-либо интенсивными процессорами, вы не найдете ничего неуместного. В этом случае проблема может быть связана с вводом / выводом (ожидание чтения / записи диска или сетевой ответ).
Если у вас есть время, подождите, прежде чем
редактировать /etc/sshd_config
и установить (или добавить)
UseDNS no
или добавьте свой ip в /etc/hosts
если это статический локальный