Примітка. Це почалося як підручник "Як налагодити", але в кінцевому підсумку було рішенням, яке допомогло мені на сервері Ubuntu 16.04 LTS.
TLDR : запустіть landscape-sysinfo
і перевірте, чи потрібна тривала команда часу; це системна роздрукована інформація по новому входу в SSH. Зауважте, що ця команда доступна не у всіх системах, landscape-common
пакет встановлює її. ("Але зачекайте, є ще більше ...")
Запустіть другий сервер ssh на іншому порту на машині, у якого є проблема, зробіть це в режимі налагодження, який не зробить його розщепленням і буде друкувати повідомлення про налагодження:
sudo /usr/sbin/sshd -ddd -p 44321
підключіться до цього сервера з іншої машини у багатослівному режимі:
ssh -vvv -p 44321 username@server
Мій клієнт виводить такі рядки безпосередньо перед сном:
debug1: Entering interactive session.
debug1: pledge: network
Гуглінг, який насправді не корисний, але журнали сервера краще:
debug3: mm_send_keystate: Finished sending state [preauth]
debug1: monitor_read_log: child log fd closed
debug1: PAM: establishing credentials
debug3: PAM: opening session
---- Pauses here ----
debug3: PAM: sshpam_store_conv called with 1 messages
User child is on pid 28051
Я помітив, що коли я переходжу UsePAM yes
до UsePAM no
цього питання, це питання вирішується.
Не пов'язане з UseDNS
будь-якими іншими налаштуваннями, UsePAM
впливає лише на цю проблему в моїй системі.
Я поняття не маю , чому, і я також не виходячи UsePAM
на no
, тому що я не знаю , які побічні ефекти, але це дозволяє мені продовжувати розслідування.
Тому, будь ласка, не розглядайте це як відповідь, а перший крок, щоб почати з’ясовувати, що не так.
Тож я продовжив розслідування і побіг sshd
із strace
( sudo strace /usr/sbin/sshd -ddd -p 44321
). Це призвело до наступного:
sendto(4, "<87>Nov 20 20:35:21 sshd[2234]: "..., 110, MSG_NOSIGNAL, NULL, 0) = 110
close(5) = 0
stat("/etc/update-motd.d", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
umask(022) = 02
rt_sigaction(SIGINT, {SIG_IGN, [], SA_RESTORER, 0x7f15dce784b0}, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGQUIT, {SIG_IGN, [], SA_RESTORER, 0x7f15dce784b0}, {SIG_DFL, [], 0}, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
clone(child_stack=0, flags=CLONE_PARENT_SETTID|SIGCHLD, parent_tidptr=0x7ffde6152d2c) = 2385
wait4(2385, # BLOCKS RIGHT HERE, BEFORE THE REST IS PRINTED OUT # [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 2385
Рядок /etc/update-motd.d
робив мене підозрілим, мабуть, процес чекає результату матеріалів, які є/etc/update-motd.d
Так що я cd
«d в /etc/update-motd.d
і побіг sudo chmod -x *
, щоб заборонити PAM , щоб запустити всі файли , які генерують цю динаміку Message Of The Day
, яка включає в себе системну навантаження , і якщо пакети повинні бути оновлені, і це вирішило проблему.
Це сервер, заснований на "енергоефективному" процесорі N3150, який потребує багато роботи в режимі 24/7, тому я думаю, що збирання всіх цих даних motd було для нього занадто багато.
Я можу почати вибірково включати скрипти в цій папці, щоб побачити, які менш шкідливі, але спеціально виклик landscape-sysinfo
дуже повільний, і 50-landscape-sysinfo
виконує цю команду. Я думаю, що саме це викликає найбільшу затримку.
Після повторного включення більшості файлів я прийшов до висновку, що
50-landscape-sysinfo
і 99-esm
стали причиною моїх проблем. 50-landscape-sysinfo
на виконання було потрібно близько 5 секунд і 99-esm
близько 3 секунд. Усі решта файлів приблизно 2 секунди.
Ні, 50-landscape-sysinfo
і 99-esm
є вирішальними. 50-landscape-sysinfo
друкує цікаву статистику системи (а також, якщо у вас мало місця!) та 99-esm
друкує повідомлення, пов’язані з цимUbuntu Extended Security Maintenance
Нарешті, ви можете створити сценарій за допомогою echo '/usr/bin/landscape-sysinfo' > info.sh && chmod +x info.sh
та отримати цю роздруківку за запитом.