SFTP ทำงานอย่างไร? ถ่ายโอนไฟล์อย่างปลอดภัยผ่าน SSH
SFTP คืออะไร ทำงานอย่างไร? อธิบายหลักการถ่ายโอนไฟล์บน SSH เปรียบเทียบ SFTP vs FTP vs FTPS พร้อมแนวทางเพิ่มความปลอดภัยสำหรับเซิร์ฟเวอร์
SFTP ทำงานอย่างไร? ถ่ายโอนไฟล์แบบเข้ารหัสที่ทุกเซิร์ฟเวอร์ต้องใช้
ส่งไฟล์ขึ้นเซิร์ฟเวอร์ด้วย FTP แบบเดิม เท่ากับส่ง Username และ Password เป็นข้อความธรรมดาให้ใครก็ดักจับได้ SFTP (SSH File Transfer Protocol) แก้ปัญหานี้โดยเข้ารหัสข้อมูลทั้งหมดผ่าน SSH ทำให้การส่งและรับไฟล์ปลอดภัยสูงสุด
ในยุคที่ภัยคุกคามไซเบอร์มีมากขึ้น SFTP เป็นสิ่งจำเป็นสำหรับทุกองค์กร โดยเฉพาะผู้ดูแล VPS หรือ Dedicated Server ที่ถ่ายโอนไฟล์เป็นประจำ
หลักการทำงานของ SFTP
เชื่อมต่อผ่าน SSH
SFTP ทำงานบน SSH Protocol ก่อนถ่ายโอนไฟล์ ต้องสร้างการเชื่อมต่อ SSH ก่อน Client ส่งคำขอไปยัง Server บน Port 22 จากนั้นทั้งสองฝั่งแลกเปลี่ยนคีย์เข้ารหัส (Key Exchange) สร้างช่องทางสื่อสารที่ปลอดภัย
เชื่อมต่อ SFTP:
sftp [email protected]
เชื่อมต่อด้วย port ที่กำหนดเอง:
sftp -P 2222 [email protected]
เชื่อมต่อด้วย SSH Key:
sftp -i ~/.ssh/id_rsa [email protected]
การยืนยันตัวตนหลายรูปแบบ
SFTP รองรับ 3 วิธีหลัก ได้แก่ Username/Password ที่ง่ายที่สุด SSH Key Pair ที่ปลอดภัยกว่ามาก โดย Public Key วางบนเซิร์ฟเวอร์และ Private Key เก็บที่ Client และ Multi-Factor Authentication ที่รวมทั้ง Password และ Key เพิ่มความปลอดภัยอีกระดับ
เข้ารหัสข้อมูลทุกอย่าง
ทุกข้อมูลที่ส่งผ่าน SFTP ถูกเข้ารหัสด้วย Algorithm อย่าง AES-256 ทั้งชื่อไฟล์ เนื้อหา คำสั่ง และ Metadata ทั้งหมดถูกปกป้องตลอดเส้นทาง ต่างจาก FTP ที่ส่งเป็น Plain Text
คำสั่ง SFTP ที่ใช้บ่อย
หลังจากเชื่อมต่อสำเร็จ จะเข้าสู่ SFTP prompt สามารถใช้คำสั่งต่าง ๆ ได้ดังนี้
อัปโหลดไฟล์ไปยังเซิร์ฟเวอร์
sftp> put localfile.txt /home/user/
อัปโหลดหลายไฟล์ด้วย wildcard:
sftp> mput *.csv /home/user/data/
ดาวน์โหลดไฟล์จากเซิร์ฟเวอร์
sftp> get /var/log/syslog ./logs/
ดาวน์โหลดหลายไฟล์:
sftp> mget /home/user/backup/*.sql ./backups/
ดูรายการไฟล์บนเซิร์ฟเวอร์
sftp> ls -la /home/user/
sftp> pwd
จัดการไฟล์และโฟลเดอร์ฝั่ง local
sftp> lcd /tmp/downloads
sftp> lpwd
sftp> lls
สร้างและลบโฟลเดอร์บนเซิร์ฟเวอร์
sftp> mkdir /home/user/new-folder
sftp> rmdir /home/user/old-folder
sftp> rm /home/user/unwanted-file.txt
เปลี่ยน Permission
sftp> chmod 755 /home/user/script.sh
ออกจาก SFTP
sftp> bye
SFTP vs FTP vs FTPS เลือกใช้ตัวไหน?
FTP ไม่ปลอดภัย
ส่งข้อมูลทั้งหมดเป็น Plain Text รวมถึง Username/Password ใช้ 2 Channel ในการสื่อสาร ไม่เหมาะกับเครือข่ายสาธารณะ
FTPS มีปัญหากับ Firewall
เพิ่ม SSL/TLS บน FTP เดิม ข้อมูลถูกเข้ารหัส แต่ยังใช้ 2 Channel ทำให้มีปัญหากับ Firewall และ NAT ต้องจัดการ SSL Certificate แยก
SFTP ดีที่สุดสำหรับเซิร์ฟเวอร์
ใช้ Channel เดียว เป็นมิตรกับ Firewall ไม่ต้องจัดการ Certificate แยก ใช้การเข้ารหัสของ SSH โดยตรง และมีฟีเจอร์จัดการไฟล์ครบครันกว่า
การใช้งาน SFTP ในสถานการณ์จริง
จัดการเว็บไซต์
นักพัฒนาใช้ SFTP อัปโหลดไฟล์เว็บไซต์ขึ้นโฮสติ้ง ตัวอย่างการอัปโหลดทั้งโฟลเดอร์:
sftp> put -r ./website/* /var/www/html/
สำรองข้อมูล
ใช้คำสั่ง sftp แบบ batch mode สำหรับ script สำรองข้อมูลอัตโนมัติ:
sftp -b batch.txt [email protected]
ตัวอย่างไฟล์ batch.txt:
put /backup/db-backup.sql.gz /home/user/backups/
bye
แลกเปลี่ยนข้อมูลระหว่างองค์กร
องค์กรที่แลกเปลี่ยนข้อมูลกับพันธมิตรใช้ SFTP เป็นช่องทางหลัก เพราะมีการเข้ารหัสและยืนยันตัวตนรัดกุม ตอบโจทย์ข้อกำหนดด้าน Compliance
แนวทางเพิ่มความปลอดภัย SFTP
เปลี่ยน Port จาก 22 เป็น Port อื่น ใช้ SSH Key แทน Password จำกัด IP ที่เชื่อมต่อได้ ใช้ Chroot จำกัดการเข้าถึงเฉพาะโฟลเดอร์ที่กำหนด และตั้ง Fail2Ban บล็อก IP ที่ล็อกอินผิดหลายครั้ง
ตัวอย่างการตั้งค่า Chroot ใน /etc/ssh/sshd_config:
Match User sftpuser
ChrootDirectory /home/sftpuser
ForceCommand internal-sftp
AllowTcpForwarding no
คำถามที่พบบ่อย (FAQ)
SFTP กับ SCP ต่างกันอย่างไร?
ทั้งสองทำงานบน SSH แต่ SFTP มีฟีเจอร์มากกว่า เช่น Resume การถ่ายโอน ดูรายการไฟล์ และจัดการ Permission ส่วน SCP เหมาะสำหรับคัดลอกไฟล์อย่างรวดเร็ว:
# SCP - คัดลอกไฟล์อย่างรวดเร็ว
scp file.txt [email protected]:/home/user/
# SFTP - จัดการไฟล์แบบ interactive
sftp [email protected]
SFTP ช้ากว่า FTP ไหม?
SFTP อาจช้ากว่า FTP เล็กน้อยเนื่องจาก Overhead ของการเข้ารหัส แต่ความแตกต่างไม่มากนักและคุ้มค่ากับความปลอดภัยที่ได้รับ
ต้องติดตั้งซอฟต์แวร์เพิ่มไหม?
ไม่ต้อง SFTP มาพร้อมกับ OpenSSH ซึ่งติดตั้งมาเป็น Default บน Linux เกือบทุก Distro ตรวจสอบได้ด้วย:
which sftp
ssh -V
เริ่มใช้ SFTP เพื่อความปลอดภัยสูงสุด
SFTP เป็นโปรโตคอลถ่ายโอนไฟล์ที่ปลอดภัยและเชื่อถือได้ เหมาะกับทุกสถานการณ์ที่ต้องการความปลอดภัย สำหรับเซิร์ฟเวอร์ที่รองรับ SFTP อย่างมีประสิทธิภาพ บริการ Colocation ของ DriteStudio พร้อมรองรับทุกความต้องการด้านโครงสร้างพื้นฐาน
DriteStudio
タイで VPS、Webホスティング、コロケーションを提供するデジタルインフラ事業者
Craft Intertech (Thailand) Co., Ltd. が運営