注:これは、「デバッグ方法」、チュートリアルとして始まりましたが、Ubuntu 16.04 LTSサーバー上で私を助けてくれた解決策になりました。
TLDR . landscape-sysinfo
を実行して、そのコマンドが終了するのに時間がかかるかどうかを確認してください; それは新しいSSHログイン時のシステム情報のプリントアウトです。このコマンドはすべてのシステムで利用できるわけではないことに注意してください。(「でも待って、もっとあるのよ…」)
問題のあるマシンの別のポートで 2 台目の ssh サーバを起動して、デバッグモードで行います。
sudo /usr/sbin/sshd -ddd -p 44321
冗長モードで別のマシンからそのサーバに接続してください。
ssh -vvv -p 44321 username@server
私のクライアントはスリープ開始直前に以下の行を出力します。
debug1: Entering interactive session.
debug1: pledge: network
landscape-common
を UsePAM yes
に変更すると、この問題が解決されることに気づきました。
UsePAM no
や他の設定とは関係ありませんが、私のシステムではUseDNS
だけがこの問題に影響しています。
理由はわかりません。また、どのような副作用があるのかわからないので、UsePAM
をUsePAM
のままにしているわけではありません。
だから、これは答えではなく、何が悪いのかを見つけ始めるための第一歩だと思ってください。
そこで私は調査を続け、no
(sshd
)でstrace
を実行した。すると、以下のようになりました。
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
sudo strace /usr/sbin/sshd -ddd -p 44321
の行は私を疑わせました。どうやらプロセスは/etc/update-motd.d
にあるものの結果を待っているようです。
これは「エネルギー効率の良い」N3150 CPUをベースにしたサーバで、24時間365日やるべきことがたくさんあるので、このすべてのモットデータを収集するのはあまりにも無理があったのだと思います。
どれが害が少ないのか、そのフォルダ内のスクリプトを選択的に有効にし始めるかもしれませんが、特別に/etc/update-motd.d
を呼び出すのは非常に遅く、cd
はそのコマンドを呼び出してしまいます。これが一番の遅延の原因になっていると思います。
ほとんどのファイルを再有効化した後、/etc/update-motd.d
とsudo chmod -x *
が私のトラブルの原因であるという結論に達しました。Message Of The Day
は実行に約5秒、landscape-sysinfo
は約3秒かかりました。残りのファイルは全部で約2秒。
50-landscape-sysinfo
も50-landscape-sysinfo
も重要ではない。99-esm
は興味深いシステム統計をプリントアウトしてくれます(スペースが足りない場合にも!)。