Vì nó không được đề cập rõ ràng, sshd theo mặc định rất nghiêm ngặt về quyền đối với các authorized_keys
tệp. Vì vậy, nếu authorized_keys
có thể ghi được cho bất kỳ ai khác ngoài người dùng hoặc có thể được ghi bởi bất kỳ ai khác ngoài người dùng, họ sẽ từ chối xác thực (trừ khi sshd được định cấu hình StrictModes no
)
Ý tôi là "có thể ghi được" là nếu bất kỳ thư mục mẹ nào có thể ghi được cho bất kỳ ai khác ngoài người dùng, người dùng được phép sửa đổi các thư mục đó có thể bắt đầu sửa đổi quyền theo cách mà họ có thể sửa đổi / thay thế ủy quyền.
Hơn nữa, nếu /home/username/.ssh
thư mục không thuộc quyền sở hữu của người dùng và do đó người dùng không có quyền đọc khóa bạn có thể gặp phải sự cố:
drwxr-xr-x 7 jane jane 4096 Jan 22 02:10 /home/jane
drwx------ 2 root root 4096 Jan 22 03:28 /home/jane/.ssh
Lưu ý rằng jane không sở hữu .ssh
tập tin. Khắc phục sự cố này thông qua
chown -R jane:jane /home/jane/.ssh
Các loại vấn đề về quyền hệ thống tập tin này sẽ không xuất hiện ssh -v
và thậm chí chúng sẽ không hiển thị trong nhật ký sshd (!) Cho đến khi bạn đặt mức nhật ký thành DEBUG.
- Chỉnh sửa
/etc/ssh/sshd_config
. Bạn muốn một dòng đọc LogLevel DEBUG
ở đó một nơi nào đó. Tải lại máy chủ SSH bằng cơ chế do distro cung cấp. ( service sshd reload
trên RHEL / CentOS / Khoa học.) Tải lại duyên dáng sẽ không bỏ các phiên hiện có.
- Hãy thử xác thực lại.
- Tìm ra nơi nhật ký cơ sở xác thực của bạn đi và đọc chúng. (IIRC,
/var/log/auth.log
trên các bản phát hành dựa trên Debian; /var/log/secure
trên RHEL / CentOS / Khoa học.)
Dễ dàng hơn nhiều để tìm ra những gì đang xảy ra với đầu ra gỡ lỗi bao gồm lỗi quyền hệ thống tập tin. Hãy nhớ hoàn nguyên thay đổi /etc/ssh/sshd_config
khi hoàn thành!