當前位置: 首頁>>技術教程>>正文


server – 登錄等待時間長

, , ,

問題描述

當我登錄我的服務器時,我得到這個:

No mail.
Last login: Fri Nov  5 14:22:45 2010...

然後我必須等待 5 秒,然後就準備好了…

wolfy@ubuntu-server:~$

這個等待時間是正常的還是我應該對 “repair” 做些什麽?

最佳方案

這通常是 pam_motd 重新生成 /etc/motd 文件的結果。您可以檢查 /etc/update-motd.d 中的各個腳本,看看是否有特別慢的地方。

次佳方案

我對 10.04 (LTS) 也有同樣的問題。

當我用 -vvv 運行我的 ssh 時,它死在:

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 包,它似乎是由通過 sshd 的 pam 身份驗證觸發的。


我好像搞定了!

在以下文件中禁用 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 中的腳本那樣阻塞,但速度較慢。

關於這個問題的錯誤報告:

從那裏解決方法:

You are right that the ability to log in is more important than presenting a motd. If this behavior is a problem for you, there are several ways that you can disable it:

  • comment out the ‘pam_motd’ line in /etc/pam.d/sshd if you don’t want to display a motd.
  • delete the contents of the /etc/update-motd.d directory.
  • chmod -x the scripts in /etc/update-motd.d that you don’t want to run.

第三種方案

最後自己找到了解決方案:

  1. sudo apt-get remove landscape-client landscape-common

  2. /etc/pam.d/login/etc/pam.d/sshd 中的注釋行 session optional pam_motd.so

現在登錄是即時的!

第四種方案

根據您的描述,這聽起來更像是網絡問題。診斷:

  • 使用 -v 參數運行 ssh 以顯示詳細信息。

  • 嘗試對您正在連接的 SSH 服務器運行 ping,看看這是否也同時掛起。

  • 嘗試其他類型的傳輸到同一台服務器。例如,帶有 –limit-rate 參數的 wget 通過 HTTP 獲取文件並讓它花費足夠長的時間以觸發 “hanging” 行為。

  • 查看它是否僅在空閑時掛起,或者即使您此刻正在做某事。如果它在空閑時掛起,-v 診斷可能會告訴您,在這種情況下,使用 keepalive 的建議可能會有所幫助 (ssh -o “TCPKeepAlive yes”)

如果您可以與 Windows 和 PuTTY 連接正常,則這可能不是服務器端的問題。

第五種方案

如果 PermitEmptyPasswordUsePAM 都啟用,OpenSSH 服務器總是嘗試使用空密碼進行身份驗證,這表明相關帳戶不需要身份驗證。它會在兩種協議中的身份驗證過程開始時立即執行此操作,並且不會響應來自客戶端的任何 “real” 身份驗證請求。如果設置了 sshd_config 標誌 PermitEmptyPassword,OpenSSH 將隻允許此類訪問;不幸的是,代碼的編寫方式在任何情況下都會執行密碼測試,因此向 PAM 顯示為失敗。

所以:禁用 PermitEmptyPasswordUsePAM ,但請記住:沒有 PAM,沒有密鑰將無法登錄。

參考:https://groups.google.com/forum/?fromgroups=#!topic/comp.security.ssh/wExY8lWlG-c

參考資料

本文由Ubuntu問答整理, 博文地址: https://ubuntuqa.com/zh-tw/article/12357.html,未經允許,請勿轉載。