SFTP และ SCP: การถ่ายโอนไฟล์อย่างปลอดภัย
เปรียบเทียบ SFTP และ SCP กับ FTP ที่ไม่ปลอดภัย และทำความเข้าใจการป้องกันด้วยการเข้ารหัสลับที่ทั้งสองมีให้
SFTP และ SCP: การถ่ายโอนไฟล์อย่างปลอดภัย เป็นบทเรียน Cryptology Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cryptology Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน
SFTP เป็นระบบย่อยของ SSH ไม่ใช่ FTP
แม้ชื่อจะมีส่วนคล้ายกัน แต่ SFTP (โพรโทคอลถ่ายโอนไฟล์ผ่าน SSH) ไม่มีความเกี่ยวข้องกับ FTP แต่อย่างใด SFTP เป็นโพรโทคอลไบนารีที่ออกแบบให้ทำงานเป็นระบบย่อยของ SSH-2 ซึ่งหมายความว่าทำงานผ่านการเชื่อมต่อ SSH ที่ผ่านการยืนยันตัวตนและเข้ารหัสแล้ว ไคลเอ็นต์ SSH เรียกใช้ระบบย่อย SFTP บนเซิร์ฟเวอร์ด้วยคำสั่ง ssh user@host -s sftp การดำเนินการทั้งหมดของ SFTP ได้รับคุณสมบัติรับประกันด้านความปลอดภัยจากชั้นขนส่ง SSH พื้นฐาน
ความสามารถของ SFTP
SFTP มีชุดการดำเนินการเกี่ยวกับไฟล์ที่หลากหลายผ่านช่องทางที่เข้ารหัส ได้แก่ การแสดงรายการเนื้อหาในไดเรกทอรี การอัปโหลดไฟล์ การดาวน์โหลดไฟล์ การลบและเปลี่ยนชื่อไฟล์ การสร้างและลบไดเรกทอรี การอ่านและกำหนดสิทธิ์ไฟล์กับเวลาประทับ และการดำเนินการถ่ายโอนที่หยุดชะงักต่อ ความสามารถเหล่านี้ทำให้ SFTP เป็นอินเทอร์เฟซระบบไฟล์ระยะไกลที่สมบูรณ์ ไม่ใช่เพียงเครื่องมือถ่ายโอนไฟล์เท่านั้น
SCP: การคัดลอกไฟล์อย่างง่ายผ่าน SSH
SCP (โพรโทคอลคัดลอกอย่างปลอดภัย) เป็นโพรโทคอลรุ่นเก่าที่เรียบง่ายสำหรับถ่ายโอนไฟล์ผ่าน SSH คำสั่ง scp file.txt user@host:/path จะคัดลอกไฟล์อย่างปลอดภัย SCP ใช้งานง่ายกว่า SFTP สำหรับการถ่ายโอนเป็นครั้งคราว แต่รองรับการดำเนินการเพียงบางส่วน ได้แก่ การคัดลอกจากเครื่องภายในไปยังเครื่องระยะไกล จากเครื่องระยะไกลมายังเครื่องภายใน หรือจากเครื่องระยะไกลไปยังเครื่องระยะไกล SCP ไม่มีโหมดโต้ตอบและรองรับการดำเนินการถ่ายโอนที่หยุดชะงักต่อได้อย่างจำกัด
ช่องโหว่ของโพรโทคอล SCP
โพรโทคอล SCP รุ่นดั้งเดิมมีช่องโหว่สำคัญ โดยเซิร์ฟเวอร์ที่เป็นอันตรายสามารถส่งไฟล์ใด ๆ ไปยังไคลเอ็นต์ได้ ไม่ว่าไคลเอ็นต์จะร้องขออะไร ผู้โจมตีที่ควบคุมเซิร์ฟเวอร์สามารถเขียนทับไฟล์นอกไดเรกทอรีปลายทางที่ตั้งใจไว้ได้ OpenSSH เลิกใช้โพรโทคอล SCP แบบเดิมและเปลี่ยนไปใช้ scp ที่ทำงานบนพื้นฐานของ SFTP ใน OpenSSH 9.0 (2022) คำสั่ง scp สมัยใหม่ใช้ SFTP อยู่เบื้องหลัง จึงกำจัดรูปแบบการโจมตีนี้ได้ขณะที่ยังคงรูปแบบคำสั่งที่คุ้นเคย
FTP เทียบกับ FTPS เทียบกับ SFTP
ตัวเลือกการถ่ายโอนไฟล์สามแบบนี้มักถูกเข้าใจผิดว่าเหมือนกัน FTP (พอร์ต 21) ไม่มีการเข้ารหัสและไม่ควรใช้งาน FTPS (FTP ผ่าน SSL) เพิ่ม TLS ให้กับ FTP ที่พอร์ต 990 (โดยปริยาย) หรือพอร์ต 21 (อย่างชัดแจ้งด้วย AUTH TLS) ซึ่งต้องใช้โครงสร้างพื้นฐาน FTP รวมถึงการจัดการใบรับรอง ส่วน SFTP เป็นโพรโทคอลที่แยกจากกันโดยสิ้นเชิงและทำงานผ่าน SSH (พอร์ต 22) โดยนำการยืนยันตัวตน SSH และการจัดการกุญแจที่มีอยู่แล้วกลับมาใช้ โดยทั่วไป SFTP กำหนดค่าและดูแลรักษาได้ง่ายกว่า FTPS
rsync ผ่าน SSH เพื่อการซิงโครไนซ์อย่างมีประสิทธิภาพ
rsync เป็นเครื่องมือสำหรับซิงโครไนซ์ไฟล์ที่ถ่ายโอนเฉพาะส่วนที่เปลี่ยนแปลงของไฟล์ จึงมีประสิทธิภาพมากกว่า SCP อย่างมากสำหรับการสำรองข้อมูลแบบเพิ่มขึ้น การเรียกใช้ rsync พร้อมแฟล็ก -e ssh จะส่งข้อมูลทั้งหมดผ่านทันเนล SSH คำสั่ง rsync -avz -e ssh user@host:/remote/ /local/ จะซิงโครไนซ์ไดเรกทอรีระยะไกลไปยังเครื่องภายใน โดยถ่ายโอนเฉพาะส่วนต่าง rsync ผ่าน SSH เป็นแนวทางมาตรฐานสำหรับการสำรองข้อมูลเซิร์ฟเวอร์และกระบวนการทำงานเพื่อนำระบบไปใช้งาน
การจัดการการถ่ายโอนไฟล์ขนาดใหญ่
SFTP รองรับการถ่ายโอนต่อจากเดิมได้ หากการเชื่อมต่อขาดหายระหว่างการอัปโหลดไฟล์ขนาดใหญ่ ก็สามารถถ่ายโอนต่อจากไบต์สุดท้ายที่ได้รับการยืนยัน แทนที่จะเริ่มใหม่จากศูนย์ ไคลเอ็นต์ sftp ของ OpenSSH รองรับคำสั่ง reput สำหรับการอัปโหลดต่อ และ reget สำหรับการดาวน์โหลดต่อ สำหรับการถ่ายโอนขนาดใหญ่มาก เช่น ไฟล์ขนาดหลายกิกะไบต์ เครื่องมืออย่าง lftp จะช่วยจัดการการถ่ายโอนได้มีประสิทธิภาพมากขึ้น โดยลองใหม่อัตโนมัติและจำกัดแบนด์วิดท์
เจล Chroot ของ SFTP สำหรับการจำกัดการเข้าถึง
เซิร์ฟเวอร์ OpenSSH สามารถจำกัดผู้ใช้ SFTP ให้อยู่ภายในโครงสร้างไดเรกทอรีที่กำหนด โดยใช้เจล chroot การเพิ่มคำสั่งกำกับ Match User พร้อม ChrootDirectory และ ForceCommand internal-sftp ลงในการกำหนดค่า SSH จะสร้างสภาพแวดล้อม SFTP ที่แยกออกจากส่วนอื่น ผู้ใช้สามารถอัปโหลดและดาวน์โหลดไฟล์ภายในไดเรกทอรีที่กำหนดให้ตนเองได้ แต่ไม่สามารถเข้าถึงส่วนที่เหลือของระบบไฟล์หรือเรียกใช้คำสั่งเชลล์ได้ วิธีนี้ใช้กันอย่างแพร่หลายสำหรับการจัดการไฟล์ของบริการเว็บโฮสติงและพอร์ทัลอัปโหลดไฟล์สำหรับลูกค้า
การกำหนดค่าเซิร์ฟเวอร์ SFTP
การเปิดใช้ SFTP บนเซิร์ฟเวอร์ OpenSSH ต้องเพิ่ม Subsystem sftp /usr/lib/openssh/sftp-server ลงใน sshd_config ไบนารี sftp-server จัดการการดำเนินการทั้งหมดของโพรโทคอล SFTP สำหรับการกำหนดค่า chroot ค่า ChrootDirectory ต้องมี root เป็นเจ้าของและต้องไม่ให้ผู้ใช้อื่นเขียนได้ ซึ่งเป็นแหล่งที่มาทั่วไปของข้อผิดพลาดในการกำหนดค่า การทดสอบการกำหนดค่าด้วย sshd -t จะตรวจสอบไวยากรณ์ก่อนโหลดบริการใหม่
SFTP สำหรับกระบวนการทำงานสำรองข้อมูลอัตโนมัติ
SFTP ทำงานร่วมกับกระบวนการทำงานสำรองข้อมูลอัตโนมัติได้เป็นอย่างดี เซิร์ฟเวอร์สำรองข้อมูลใช้การยืนยันตัวตนด้วยกุญแจสาธารณะเพื่อเชื่อมต่อโดยไม่ใช้รหัสผ่าน ทำให้สามารถถ่ายโอนตามเวลาที่ cron กำหนดได้โดยไม่ต้องมีมนุษย์ควบคุม ผู้ใช้สำรองข้อมูลถูกจำกัดด้วย chroot ให้อยู่ในไดเรกทอรีสำหรับอัปโหลด ซึ่งช่วยจำกัดความเสียหายหากเซิร์ฟเวอร์สำรองข้อมูลถูกเจาะระบบ การเฝ้าติดตามบันทึกการเชื่อมต่อ SFTP ที่ล้มเหลวและข้อผิดพลาดในการถ่ายโอนจะช่วยแจ้งเตือนปัญหาของการสำรองข้อมูลได้ตั้งแต่เนิ่น ๆ ก่อนที่จะส่งผลต่อความสามารถในการกู้คืน
เครื่องมือไคลเอนต์ SFTP
นอกเหนือจากไคลเอนต์ sftp แบบบรรทัดคำสั่งแล้ว เครื่องมือแบบกราฟิก เช่น FileZilla, Cyberduck และ WinSCP ยังรองรับ SFTP ด้วยอินเทอร์เฟซแบบลากแล้ววาง การจัดการบุ๊กมาร์ก และมุมมองไดเรกทอรีแบบเคียงข้างกัน เครื่องมือเหล่านี้ได้รับความนิยมในหมู่นักพัฒนาและผู้ดูแลระบบที่ต้องการกระบวนงานแบบ GUI ทั้งหมดใช้โพรโทคอล SFTP และการยืนยันตัวตน SSH ชุดเดียวกัน รวมถึงรองรับไฟล์คีย์ SSH และตัวแทน SSH ของระบบ
SFTP เทียบกับ SCP
ช่องโหว่ด้านความปลอดภัยหลักในโพรโทคอล SCP รุ่นเก่าที่ทำให้ OpenSSH เปลี่ยนไปใช้การทำงานที่อาศัย SFTP คือช่องโหว่ใด
SFTP และ SCP: ประเด็นสำคัญ
SFTP เป็นระบบย่อยของ SSH และไม่เกี่ยวข้องกับ FTP โดยให้การดำเนินการกับระบบไฟล์ระยะไกลอย่างครบถ้วนผ่าน SSH ที่เข้ารหัสไว้ SCP เรียบง่ายกว่า แต่โพรโทคอลรุ่นเก่ามีช่องโหว่การไล่ผ่านเส้นทางฝั่งเซิร์ฟเวอร์ ซึ่ง OpenSSH 9.0 แก้ไขด้วยการเปลี่ยนไปใช้ SFTP อยู่เบื้องหลัง FTPS เพิ่ม TLS ให้กับ FTP ขณะที่ SFTP อาศัย SSH ทั้งหมด เครื่องมือ rsync ผ่าน SSH ให้การซิงโครไนซ์แบบเพิ่มส่วนอย่างมีประสิทธิภาพ การกักขังแบบ chroot จำกัดผู้ใช้ SFTP ให้อยู่ในไดเรกทอรีที่กำหนด
คำถามที่พบบ่อย
บทเรียน “SFTP และ SCP: การถ่ายโอนไฟล์อย่างปลอดภัย” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “SFTP และ SCP: การถ่ายโอนไฟล์อย่างปลอดภัย” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cryptology Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “SFTP และ SCP: การถ่ายโอนไฟล์อย่างปลอดภัย”
เปรียบเทียบ SFTP และ SCP กับ FTP ที่ไม่ปลอดภัย และทำความเข้าใจการป้องกันด้วยการเข้ารหัสลับที่ทั้งสองมีให้ คุณปฏิบัติ Cryptology Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cryptology Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cryptology Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “SFTP และ SCP: การถ่ายโอนไฟล์อย่างปลอดภัย” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Cryptology Academy นี้ได้ไหม
ได้ บทเรียน Cryptology Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- อะไรทำให้โพรโทคอลปลอดภัย
- SSH: การรักษาความปลอดภัยการเข้าถึงระยะไกล
- SFTP และ SCP: การถ่ายโอนไฟล์อย่างปลอดภัย
- DNSSEC: การพิสูจน์ความถูกต้องของคำตอบ DNS