另一个选择是@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的,并且其子流程都做了,将与strace-ED到指定的文件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尝试记录消息“ 用户cica”不允许,因为帐户已锁定 -只能这样做,因为日志记录不够冗长。但是我们已经知道,由于该帐户已被锁定,因此公钥被拒绝。
这还不是解决方案-现在我们需要使用google,对于sshd来说,这意味着“锁定帐户”。这将是最有可能的一些琐碎的/etc/passwd
,/etc/shadow
巫术,但重要的是做-问题是不是一个神秘,而是一种可调试/ googlable之一。