さらに別のオプションは、@Jagadishさんの変種である答えに:strace
SSHデーモン。
sshdを停止する必要がないという大きな利点があります。何かがうまくいかない場合、完全にロックアウトされる可能性があります。
まず、メインのsshdプロセスのPIDを見つけます。ここでは、を実行することで確認できますpstree -pa|less
。
|-sshd,633 -D <-- THIS IS WHAT WE WANT!
| `-sshd,21973
| `-sshd,21996
| `-bash,22000
| `-screen,638 -r
pidが633であることを知った後、strace
その子に続いてそれを実行できます。
strace -p 633 -s 4096 -f -o sux
その結果、このsshdとその子プロセスが行ったことはすべてsux
、ローカルディレクトリに指定されたファイルに追跡されます。
その後、問題を再現します。
カーネルコールログの膨大なリストがありますが、ほとんどの場合、これはわかりにくい/無関係ですが、どこにでもあるわけではありません。私の場合、重要なことはこれでした:
6834 sendto(4, "<38>Jan 15 18:49:21 sshd[6834]: User cica not allowed because account is locked\0", 84, MSG_NOSIGNAL, NULL, 0) = 84
sshdは、アカウントがロックされているため、User cica not allowedというメッセージをログに記録しようとしましたが、ログに記録できないため、記録できませんでした。しかし、アカウントがロックされていたため、公開鍵は拒否されました。
これはまだ解決策ではありません-sshdの場合は「ロックされたアカウント」を意味するGoogleを使用する必要があります。おそらく些細な/etc/passwd
、/etc/shadow
魔法のようなものになりますが、重要なことは行われています-問題は謎めいたものではなく、簡単にデバッグ/グーグルできる問題です。