เมื่อไม่นานมานี้ ฉันได้ตั้งค่าเซิร์ฟเวอร์ SFTP ซึ่งทำงานอย่างมีความสุข ฉันมีการกำหนดค่าเช่นนี้ใน ssh_config ของฉัน
# ลบล้างค่าเริ่มต้นที่ไม่มีระบบย่อย
#ระบบย่อย sftp /usr/lib/openssh/sftp-server
ระบบย่อย sftp ภายใน-sftp
# ตัวอย่างของการตั้งค่าที่ลบล้างในแต่ละผู้ใช้
#Match ผู้ใช้ anoncvs
#X11หมายเลขการส่งต่อ
# AllowTcpForwarding เลขที่
#ใบอนุญาตTTYเลขที่
# เซิร์ฟเวอร์ ForceCommand cvs
จับคู่ User miscout
# บังคับให้การเชื่อมต่อใช้ SFTP และ chroot ไปยังไดเร็กทอรีที่ต้องการ
ForceCommand ภายใน-sftp
ไดเรกทอรี Chroot %h
# ปิดใช้งานช่องสัญญาณ, ตัวแทนการตรวจสอบความถูกต้อง, การส่งต่อ TCP และ X11
ใบอนุญาตอุโมงค์เลขที่
AllowAgent หมายเลขการส่งต่อ
อนุญาตให้ Tcp ส่งต่อหมายเลข
X11หมายเลขการส่งต่อ
จับคู่กลุ่ม sftp_users
ChrootDirectory /mnt/reos-storage-1/sftp_data/%u
ForceCommand ภายใน-sftp
# ปิดใช้งานช่องสัญญาณ, ตัวแทนการตรวจสอบความถูกต้อง, การส่งต่อ TCP และ X11
ใบอนุญาตอุโมงค์เลขที่
AllowAgent หมายเลขการส่งต่อ
อนุญาตให้ Tcp ส่งต่อหมายเลข
X11หมายเลขการส่งต่อ
มีกลุ่มผู้ใช้ sftp_users
และผู้ใช้ชื่อ sftpuser1
วันนี้เพื่อความสนุก ฉันตัดสินใจลบไดเร็กทอรีโดยไม่ตั้งใจ /mnt/reos-storage-1/sftp_data
. ฉันสร้างไดเร็กทอรีและไดเร็กทอรีย่อยขึ้นใหม่ในภายหลัง แต่ตอนนี้ฉันไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ SFTP ได้ ฉันได้รับข้อผิดพลาดเช่นนี้:
$sftp sftpuser1@<redacted>
รหัสผ่านของ sftpuser1@<redacted>:
packet_write_wait: การเชื่อมต่อกับพอร์ต 192.41.113.249 22: ท่อแตก
ปิดการเชื่อมต่อ
ฉันสามารถ ssh เข้าไปในเครื่องในฐานะผู้ใช้รายอื่น
ฉันเดาว่าฉันมีสิทธิ์ผิดในไดเร็กทอรีนี้ เนื่องจากเป็นสิ่งเดียวที่ฉันเปลี่ยนแปลง สิทธิ์และความเป็นเจ้าของในปัจจุบันมีลักษณะดังนี้:
[รูท] /mnt/reos-storage-1 $ ls -l sftp_data/
รวม 4
drwxrwx--x 3 รูทรูท 4096 23 มิ.ย. 13:22 น. sftpuser1
[รูท] /mnt/reos-storage-1 $ ls -l sftp_data/sftpuser1/
รวม 4
drwxrwx--x 3 sftpuser1 sftp_users 4096 23 มิ.ย. 13:23 อัปโหลด
[รูท] /mnt/reos-storage-1 $ ls -l sftp_data/sftpuser1/upload/
รวม 864
drwxrwx--x 2 sftpuser1 sftp_users 884736 23 มิ.ย. 16:06 MiScout
ใครช่วยบอกฉันทีว่าฉันทำผิดอะไร?