サーバーにログインすると、次のメッセージが表示されます。
No mail.
Last login: Fri Nov 5 14:22:45 2010...
それから私は5秒間待たなければならず、準備ができています...
wolfy@ubuntu-server:~$
この待機時間は正常ですか、これを「修復」するために何かを行う必要がありますか?
これは通常、pam_motd
/etc/motd
ファイルを再生成した結果です。 /etc/update-motd.d
の個々のスクリプトをチェックして、何かが特に遅いかどうかを確認できます。
10.04(LTS)でも同じ問題があります。
-vvv
でsshを実行すると、次の場所で停止します。
debug1: Entering interactive session.
この答えを拡張します。
サーバーをリモートで再起動し、DEBUG logginを有効にしました。また、この機会を利用してログインしたままにし、他のログイン試行を観察しました。ここで何が起こるかです。クライアントは接続し、承認され、上記のメッセージでハングします。
サーバーでは、プロセスリストに次のように表示されます。
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
を実行できますが、何らかの理由で、ログインプロセスが停止する理由がわかりません。プロセスを強制終了すると、ログインはプロンプトに進み、successfulになります。
これはssh(d)の問題ではないようです。update-motd
とランドスケープにより関連しています。 update-motd
パッケージをアンインストールしましたが、/etc/update-motd
ディレクトリが持続し、スクリプトがまだ実行されているようです-プロセスがハングします。
これをさらにデバッグする:
/etc/update-motd.d/
ディレクトリは実際にはパッケージupdate-motd
に属していませんが、sshdを介したpam認証によってトリガーされているようです。
私はそれを打ち付けたようです!
次のファイルでpam_motdを無効にしました。
もう一つ:
apt-get purge landscape-client landscape-common
これらは一定の範囲で役立つようです。ただし、onlyは/etc/update-motd.d/
の問題のスクリプトを削除し、そのディレクトリ内のすべてのスクリプトを削除することも、pam_motd
を削除することもしません。
一般に、pam_motd
を完全に無効にする方法はありませんでした。何をするにしても、ログインプロセスが特定の範囲まで遅くなるからです。 landscape-common
のスクリプトのようにブロックしませんが、遅いです。
この問題に関するバグレポート:
そこからの回避策:
ログインする機能はmotdを提示するよりも重要であることは正しいです。この動作が問題になる場合は、いくつかの方法で無効にできます。
- motdを表示したくない場合は、
/etc/pam.d/sshd
の 'pam_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
これでログインが瞬時になりました!
あなたの説明から、それはネットワークの問題のように聞こえます。診断するには:
WindowsとPuTTYでOKに接続できれば、おそらくサーバー側の問題ではありません。
PermitEmptyPassword
とUsePAM
の両方が有効になっている場合、OpenSSHサーバーは常にヌルパスワードで認証を試行します。これは、問題のアカウントに認証が必要ないというサインとして受け取ります。これは、両方のプロトコルで認証プロセスが開始されるとすぐに行われ、クライアントからの「実際の」認証要求への応答ではありません。 OpenSSHは、sshd_configフラグPermitEmptyPassword
が設定されている場合にのみ、そのようなアクセスを許可します。残念ながら、コードの記述方法は、どのような場合でもパスワードテストを実行するため、失敗としてPAMまで表示されます。
したがって:PermitEmptyPassword
またはUsePAM
を無効にしますが、PAMがないと、キーなしではログインできません。
リファレンス: https://groups.google.com/forum/?fromgroups=#!topic/comp.security.ssh/wExY8lWlG-c
私の限られた経験では、PuTTYが機能するが、Linux(この場合はUbuntu)が機能しない場合、通常はキープアライブです。ネットワークまたはサーバーの問題は、両方のクライアントOSに影響します。
コマンドラインで上記のキープアライブオプションを使用できますが、入力するのは面倒です。
いくつかの構成ファイルを簡単に編集できます。
root access
があり、すべてのユーザーに対して自動的に有効にする場合は、/etc/ssh/ssh_config
を編集して、追加します
KeepAlive yes
ServerAliveInterval 120
ルートアクセスがない場合、または単一のユーザーに対して有効にする場合は、~/.ssh/config
を編集して、同じ2行を追加します。
ログインすると、ubuntuはこれらのファイルを1つ以上実行します。
/etc/bash.bashrc
~/.bash_profile
~/.bashrc
あなたはそれらの中に何があるのかを見ることができ、多分時間がかかっているものを見るためにそれらを実行しようとするかもしれません。
/ var/logでシステムログを確認します。関連するエラー/タイムアウトのメッセージが見つかる場合があります。
すでにログインしている接続(または別のコンソール)からサーバーにログインしているときに、実行中のプロセスを監視することができます。その時点でどのプロセスが最もアクティブであるか、または最もCPUを使用しているのかを特定する機会があります。
以下は可能な方法の1つです。
top
を実行して、何が起こるかを確認します。CPUを集中的に使用する計算が原因で遅延が発生しない場合は、不適切なものを見つけることはできません。この場合、問題はI/Oバウンド(ディスクの読み取り/書き込みまたはネットワーク応答の待機)である可能性があります。
前に時間があれば
編集/etc/sshd_config
設定(または追加)
UseDNS no
または、静的なローカルIPの場合は、/etc/hosts
にIPを追加します