เนื่องจากไม่ได้มีการกล่าวถึงอย่างชัดเจน sshd เป็นค่าเริ่มต้นที่เข้มงวดมากเกี่ยวกับการอนุญาตสำหรับauthorized_keys
ไฟล์ ดังนั้นถ้าauthorized_keys
เป็นแบบเขียนได้สำหรับใครอื่นที่ไม่ใช่ผู้ใช้หรือสามารถทำเขียนได้โดยใครอื่นที่ไม่ใช่ผู้ใช้ก็จะปฏิเสธที่จะรับรองความถูกต้อง (ยกเว้นกรณีที่มีการกำหนดค่า sshd ด้วยStrictModes no
)
สิ่งที่ฉันหมายถึงโดย "สามารถเขียนได้" คือถ้ามีไดเรกทอรีหลักใด ๆ ที่สามารถเขียนได้สำหรับผู้อื่นที่ไม่ใช่ผู้ใช้ผู้ใช้ที่ได้รับอนุญาตให้แก้ไขไดเรกทอรีเหล่านั้นสามารถเริ่มแก้ไขสิทธิ์ในวิธีที่พวกเขาสามารถแก้ไข / แทนที่
นอกจากนี้หาก/home/username/.ssh
ไดเรกทอรีไม่ได้เป็นของผู้ใช้และทำให้ผู้ใช้ไม่มีสิทธิ์ในการอ่านคีย์คุณสามารถพบปัญหา:
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
โปรดทราบว่าเจนไม่ได้เป็นเจ้าของ.ssh
ไฟล์ แก้ไขผ่านทางนี้
chown -R jane:jane /home/jane/.ssh
ปัญหาเกี่ยวกับการอนุญาตระบบไฟล์เหล่านี้จะไม่ปรากฏขึ้นssh -v
และพวกเขาจะไม่ปรากฏในบันทึก sshd (!) จนกว่าคุณจะตั้งค่าระดับการบันทึกเป็น DEBUG
/etc/ssh/sshd_config
แก้ไข คุณต้องการบรรทัดที่อ่านLogLevel DEBUG
ตรงนั้น โหลดเซิร์ฟเวอร์ SSH อีกครั้งโดยใช้กลไกที่มีให้โดย distro ( service sshd reload
บน RHEL / CentOS / Scientific) การรีโหลดที่ดีจะไม่ทำให้เซสชันที่มีอยู่ลดลง
- ลองตรวจสอบสิทธิ์อีกครั้ง
- กำหนดที่บันทึกสิ่งอำนวยความสะดวกของคุณไปและอ่าน (IIRC
/var/log/auth.log
บน Distros แบบ Debian; /var/log/secure
บน RHEL / CentOS / Scientific)
ง่ายกว่ามากในการตรวจสอบสิ่งที่ผิดปกติกับผลลัพธ์การดีบักซึ่งรวมถึงข้อผิดพลาดในการอนุญาตระบบไฟล์ อย่าลืมเปลี่ยนกลับเป็น/etc/ssh/sshd_config
เมื่อเสร็จแล้ว!