Tuy nhiên, một lựa chọn khác là một biến thể của câu trả lời của @Jagadish : cho strace
daemon ssh.
Nó có một lợi thế đáng kể, đó là chúng ta không cần phải dừng sshd, điều gì có thể dẫn đến việc khóa hoàn toàn nếu có vấn đề gì xảy ra.
Đầu tiên, chúng tôi tìm thấy pid của quá trình sshd chính. Ở đây chúng ta có thể thấy nó bằng cách thực hiện a pstree -pa|less
.
|-sshd,633 -D <-- THIS IS WHAT WE WANT!
| `-sshd,21973
| `-sshd,21996
| `-bash,22000
| `-screen,638 -r
Sau khi biết, pid là 633, chúng ta có thể strace
, theo con của nó:
strace -p 633 -s 4096 -f -o sux
Kết quả sẽ là mọi thứ mà sshd này và các tiến trình con của nó đã thực hiện sẽ được strace-ed vào tệp có tên sux
trong thư mục cục bộ.
Sau đó tái tạo vấn đề.
Nó sẽ có một danh sách lớn nhật ký cuộc gọi kernel, hầu hết không thể hiểu được / không liên quan đến chúng tôi, nhưng không phải ở đâu cũng có. Trong trường hợp của tôi, điều quan trọng là:
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
Điều đó có nghĩa là, sshd đã cố gắng đăng nhập tin nhắn Người dùng cica không được phép vì tài khoản bị khóa - điều đó là không thể, bởi vì việc đăng nhập không đủ dài dòng cho điều đó. Nhưng chúng ta đã biết, pubkey đã bị từ chối vì tài khoản đã bị khóa.
Nó vẫn chưa phải là một giải pháp - bây giờ chúng ta cần google, nghĩa là "tài khoản bị khóa" trong trường hợp của sshd. Nó rất có thể là một số tầm thường /etc/passwd
, /etc/shadow
phù thủy, nhưng điều quan trọng đã được thực hiện - vấn đề không phải là một bí ẩn, mà là một vấn đề dễ bị gỡ lỗi / googlable.