ฉันกำลังตั้งค่าเว็บเซิร์ฟเวอร์ที่ใช้ Windows Server 2019 หนึ่งในผู้จำหน่ายของเราต้องสามารถอัปโหลดไฟล์ได้ ฉันมี
- เพิ่ม sshd
- สร้างล็อกอินให้พวกเขาใช้
- สร้างกลุ่มสำหรับการเข้าสู่ระบบนั้น
- เพิ่มการเข้าสู่ระบบนั้นลงในกลุ่ม และนำการเข้าสู่ระบบออกจากกลุ่มอื่นทั้งหมด
- สร้างไดเร็กทอรีอัปโหลด
- ให้กลุ่ม เขียน และ แก้ไข สิทธิ์ในไดเร็กทอรีนั้น
- เพิ่มบรรทัด
ForceCommand internal-sftp -d "C:\inetpub\ftproot\Upload"
ถึง ก จับคู่ คำสั่งสำหรับกลุ่มนั้นใน sshd_config
จนถึงตอนนี้ดีมาก การเข้าสู่ระบบนั้นสามารถเชื่อมต่อกับกล่องผ่าน SFTP และเซสชันจะเริ่มต้นโดยอัตโนมัติในไดเร็กทอรี ที่อัพโหลดและสามารถอัปโหลดและดาวน์โหลดไฟล์ได้จากที่นั่น แต่ฉันไม่สามารถหาวิธีป้องกันไม่ให้เห็นเนื้อหาของไดเร็กทอรีอื่น แค่ลบล็อกอินออกจากกลุ่ม ผู้ใช้ ไม่มีผล การปฏิเสธกลุ่ม อ่าน และ รายการ ในการปิดล้อม ftproot ไดเร็กทอรีไม่สามารถเชื่อมต่อได้ (ด้วยความล้มเหลวในการตรวจสอบสิทธิ์) คำแนะนำเดียวที่ฉันพบในหนึ่งชั่วโมงของการค้นหาโดย Google คือตั้งค่าให้ ChrootDirectory
แต่นั่นส่งผลให้การเข้าสู่ระบบไม่สามารถเชื่อมต่อโดย SFTP หรือ SSH ได้ (ด้วยความล้มเหลวของบริการในการตอบสนอง) ฉันค่อนข้างใหม่สำหรับเซิร์ฟเวอร์ Windows และฉันก็คิดไม่ออก จะต้องมีวิธีที่ถูกต้องในการทำเช่นนี้ - ใครสามารถชี้ให้ฉันไปในทิศทางที่ถูกต้องได้บ้าง
[อัปเดต]
กล่องนี้กำลังเรียกใช้ OpenSSH 7.7:
> ssh -V
OpenSSH_for_Windows_7.7p1, LibreSSL 2.6.5
เมื่อฉันเพิ่มบรรทัดนี้ใน จับคู่ คำสั่งสำหรับกลุ่ม SFTP:
ChrootDirectory "C:\inetpub\ftproot\Upload"
แล้วพยายามเชื่อมต่อในฐานะผู้ใช้ใด ๆ ไม่ว่าจะอยู่ในกลุ่มนั้นหรือไม่ นี่คือสิ่งที่ปรากฏใน sshd.log (เห็นได้ชัดว่า pid, port และ timestamp จะแตกต่างกันไป):
3332 2021-08-17 12:04:24.931 รหัสผ่านล้มเหลวสำหรับผู้ใช้ sftpuser ที่ไม่ถูกต้องจากพอร์ต XX.XX.XX.XX 34240 ssh2