SCP (Secure Copy Protocol) และ SFTP (Secure File Transfer Protocol) เป็นทางเลือกแทน FTP แบบเก่าที่ส่งข้อมูลเป็น plain text ทั้งคู่ใช้โปรโตคอล SSH สำหรับการสื่อสารที่ปลอดภัย
SCP (Secure Copy Protocol)
- Non-interactive: ใช้ shell + remote command เพียงคำสั่งเดียว ถ่ายโอนไฟล์ระหว่าง 2 เครื่อง
- รุ่นปลอดภัยของ RCP ใช้ SSH สำหรับ authentication แต่ syntax คล้าย FTP
- เหมาะสำหรับ สคริปต์อัตโนมัติ (unattended transfers)
- รองรับ wildcard สำหรับถ่ายโอนหลายไฟล์
- ถ่ายโอนระหว่าง local↔remote หรือ remote↔remote
- เขียนไบต์ลง SSH tunnel ให้ SSH จัดการ integrity/compression
SFTP (Secure File Transfer Protocol)
- Interactive: โปรโตคอล/โปรแกรมโต้ตอบ ทำงานบน SSH encrypted transport
- ใช้ compression, public key authentication เข้าสู่โฮสต์ แล้วเข้าสู่ interactive command mode
- SFTP อาจหมายถึง "SSH File Transfer Protocol" (มาตรฐานใหม่) หรือ "Simple FTP" (เก่า ถูกทดแทนด้วย TFTP, พอร์ต 115)
- รองรับ non-interactive mode (ถ้าใช้ auth แบบไม่โต้ตอบ)
- ไม่ใช่ FTP over SSH แตเป็นโปรโตคอลใหม่โดยสิ้นเชิง
ความแตกต่างสำคัญ
| ด้าน | SCP | SFTP |
|---|---|---|
| ฟังก์ชันหลัก | ถ่ายโอนไฟล์ปกป้องการขโมยข้อมูล | จัดการไฟล์ครบ: เข้าถึง, ถ่ายโอน, จัดการ (ลบ, rename, ls) |
| การทำงาน | ถ่ายโอนอย่างเดียว ไม่ทำ directory listing, ไม่ลบไฟล์ remote | ทำทุกอย่างได้ มี GUI component ควบคุม remote FS ได้ |
| ความเร็ว | เร็วกว่า (ยืนยัน packet เร็ว, อัลกอริทึมมีประสิทธิภาพกว่า) โดยเฉพาะ high latency | ช้ากว่า (ต้อง ack ทุก packet เล็กๆ) |
| Resume transfer | ไม่รองรับ | รองรับ (ผ่าน command line client) |
| Command line | Non-interactive: เขียนคำสั่งทั้งหมดบนบรรทัดคำสั่ง | Interactive: อ่านคำสั่งจากไฟล์ได้ |
ความคล้าย: ใช้พอร์ต TCP 22, รันบน SSH, encryption + public key auth, ไม่มีขีดจำกัดขนาดไฟล์
ควรเลือกตัวไหน?
ไม่มี "ตัวไหนดีกว่า" แน่นอน ขึ้นอยู่กับความต้องการ:
- SCP: ถ่ายโอนครั้งเดียว, ใช้ในสคริปต์, ต้องการความเร็ว
- SFTP: จัดการไฟล์ remote ต่อเนื่อง, ต้องการ resume, ต้องการ GUI/โต้ตอบ