ฉันใช้ Debian เสถียรภาพและฉันต้องการสร้างสภาพแวดล้อมต่อไปนี้สำหรับผู้ใช้ในกลุ่ม 'sftponly' ของฉัน:
- ตัดสินจำคุก
- สามารถถ่ายโอนด้วย SFTP
- สามารถถ่ายโอนกับ SCP
- ไม่สามารถเข้าสู่ระบบแบบโต้ตอบกับ SSH
จากการทดลองและการวิจัยของฉันดูเหมือนว่าบทต่อไปนี้ใน sshd_config ทำให้ฉันอยู่ที่นั่น 90%:
Match group sftponly
ChrootDirectory /sftp/%u
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
สิ่งนี้ทำให้ฉันจำคุก SFTP และไม่มี SSH ซึ่งดี แต่มันก็ปิดการใช้งาน SCP ซึ่งน้อยกว่าอุดมคติเพราะมีลูกค้าเพียงไม่กี่รายที่เป็นกระบวนการที่ใช้สคริปต์ที่ใช้ SCP มากกว่า SFTP (เซิร์ฟเวอร์ที่เราใช้แทนที่รองรับโปรโตคอลทั้งสอง) และเนื่องจากลูกค้าเหล่านั้นไม่ได้อยู่ภายใต้การควบคุมของเรา แก้ไขแล้วมันไม่น่าจะปิดการใช้งาน SCP ได้เลย
มันสมเหตุสมผลว่าการกำหนดค่านี้จะปิดการใช้งาน SCP เนื่องจากการเชื่อมต่อของ SCP ที่เข้ามาทำให้ sshd วางไข่กระบวนการ 'SCP' ผ่านเชลล์การเข้าสู่ระบบของผู้ใช้ในฐานะผู้ใช้รายนั้น ดูเหมือนว่าปกติจะเป็นจริงของ SFTP ไม่ใช่สำหรับตัวจัดการ 'internal-sftp' พิเศษ
ดังนั้นฉันคิดว่าคำถามของฉันคือ: มีวิธีการที่จะบรรลุผลเช่นเดียวกับ 'sftp ภายใน' แต่สำหรับ SCP โดยไม่ต้องใช้เครื่องมือของบุคคลที่สามเช่น scponly และ rssh หรือไม่? สิ่งที่ดีจริงๆเกี่ยวกับ 'internal-sftp' คือมันไม่จำเป็นต้องติดตั้งคุกด้วยไฟล์สนับสนุนหรือจัดการกับ setuid binaries ของบุคคลที่สามที่มีช่องโหว่ (โดยเฉพาะมีประวัติของการหาประโยชน์)