การติดตั้ง SFTP Server บน Nipa.Cloud

SFTP server installation

SFTP ย่อมาจาก  Secured File Transfer Protocol เป็นโปรโตคอลที่ใช้แทน FTP โดยเป็นส่วนหนึ่งของ SSH ทั้งนี้ SFTP ทำหน้าที่ช่วยในการรับ-ส่งไฟล์ ระหว่าง client และ server ได้ปลอดภัยมากยิ่งขึ้น

ขั้นตอรการเตรียม SFTP Server

  1. สร้าง instance บน nipa.cloud และเลือก Security Group ให้เป็น SSH และ Ping ( ในที่นี้จะใช้ Ubuntu 16.04 )
  2. กดสร้าง instance และเริ่มขั้นตอนต่อไป

ขั้นตอนการเริ่มติดตั้ง SFTP Server

  1. สร้าง user
    sudo useradd sftpuser
  1. สร้าง directory สำหรับการรับ-ส่งไฟล์

         สร้าง directory

    sudo mkdir -p /data/sftp/uploads

         กำหนด owner

    sudo chown root:root /data/sftp

         กำหนดให้ root มีสิทธิ์ในการเขียนไฟล์

    sudo chown 755 /data/sftp

         กำหนดใสิทธิ์การเป็นเจ้าของให้ sftpuser

    sudo chown sftpuser:sftpuser /data/sftp/uploads
  1. จำกัดการเข้าถึงของ user

         แก้ไขไฟล์ /etc/ssh/sshd_config โดยเพิ่มบรทัดเหล่านี้ไปด้านล่างสุดของไฟล์

                          Match User sftpuser
                          ForceCommand internal-sftp
                          PasswordAuthentication yes
                          ChrootDirectory /data/sftp
                          PermitTunnel no
                          AllowAgentForwarding no
                          AllowTcpForwarding no
                          X11Forwarding no

** หมายเหตุ

  • Match User : บอกให้ SSH Server อนุญาตให้ user ที่กำหนดให้สามารถ remote เข้าไปที่ sftp server เท่านั้น
  • ForceCommand internal-sftp : บังคับให้ SSH server ไปรัน SFTP ด้วยการ login และ ปิดการเข้าถึงด้วย shell
  • PasswordAuthentication yes : อนุญาตให้ยืนยันตัวตนด้วย password
  • ChrootDirectory /data/sftp :เพื่อไม่ให้ user ที่เข้ามาไม่สามารถเข้าไปที่ directory อื่นได้ นอกจาก /data/sftp
  • AllowAgentForwarding no , AllowTcpForwarding no , X11Forwarding no : ปิดการใช้งาน port forwarding, tunneling and X11 forwarding สำหรับ user  ที่กำหนดไว้ข้างต้น

Restart service

sudo systemctl restart sshd

 

  1. ทดสอบการติดตั้ง

          ทดสอบ remote เข้าไปที่ host ที่ติดตั้ง sftp server

    ssh sftpuser@<host >

 

          เกิด error

  " This service allows sftp connections only.
    Connection to localhost closed. "

          นั่นหมายความว่า sftpuser ไม่สามารถ remote ไปที่ server ด้วย SSH

 

เข้าด้วย SFTP สำหรับการรับ-ส่งไฟล์

    sftp sftpuser@<host>

 

ทดสอบด้วยการแสดงไฟล์ใน directory

    sftp> ls 

 

ทดสอบการเข้าถึง directory

    sftp> cd ..  

 

คำสั่งนี้จะแสดง error เนื่องจาก sftpuser ไม่มีสิทธิ์ในการเข้าถึง directory อื่นนอก /data/sftp

 

Was this article helpful?

No 0

About the Author