Computer >> คอมพิวเตอร์ >  >> ระบบ >> Linux

วิธีการตั้งค่าเซิร์ฟเวอร์ SFTP บน Linux

วิธีการตั้งค่าเซิร์ฟเวอร์ SFTP บน Linux

คนส่วนใหญ่ชอบโปรแกรมอรรถประโยชน์ เช่น FileZilla, WinSCP หรือโปรแกรม FTP อื่นๆ เมื่อต้องการถ่ายโอนไฟล์ไปยังหรือจากเซิร์ฟเวอร์ Linux SFTP เป็นทางเลือกที่ปลอดภัยสำหรับโปรโตคอล FTP ดั้งเดิม มันทำหน้าที่เหมือนกับเวอร์ชันที่ไม่ปลอดภัยเป็นส่วนใหญ่ แต่มีการเพิ่มชั้นของการเข้ารหัส เพื่อให้บรรลุสิ่งนี้ จะใช้โปรโตคอล SSH ที่มีความสามารถเข้ารหัส การตั้งค่าเซิร์ฟเวอร์ SFTP บนระบบ Linux ของคุณมีหลายขั้นตอน ซึ่งเราจะนำเสนอที่นี่

SFTP คืออะไร

SFTP (Secure File Transfer Protocol) เป็นโปรโตคอลเครือข่ายสำหรับการถ่ายโอนไฟล์จากไคลเอนต์ไปยังเซิร์ฟเวอร์ ไม่เหมือนกับ FTP (File Transfer Protocol) SFTP ใช้โปรโตคอล SSH (Secure Shell) เพื่อเข้ารหัสข้อมูลที่ส่ง ได้รับการพัฒนาโดยนักวิทยาศาสตร์คอมพิวเตอร์ Tatu Ylönen และ Sami Lehtinen ซึ่งรับผิดชอบในการพัฒนาโปรโตคอล SSH ในปี 1990 ด้วย อย่างไรก็ตาม เวอร์ชันใหม่นี้ได้รับการพัฒนาโดย IETF (Internet Engineering Task Force)

สามารถอธิบายได้ว่าเป็นโปรโตคอลระบบไฟล์ระยะไกล แม้ว่าชื่อจะแนะนำว่าดำเนินการถ่ายโอนไฟล์เท่านั้น เมื่อส่งไฟล์โดยใช้ SFTP จากไคลเอนต์ไปยังเซิร์ฟเวอร์ที่รับ ข้อมูลจะถูกเข้ารหัสก่อนที่จะส่งไปยังปลายทาง หากข้อมูลที่ส่งไปถูก "คนกลาง" สกัดกั้น บุคคลที่สามนี้จะไม่สามารถถอดรหัสได้อย่างง่ายดาย

การติดตั้ง SSH และเซิร์ฟเวอร์ OpenSSH

เรากำลังเริ่มขั้นตอนการตั้งค่าเซิร์ฟเวอร์ SFTP โดยการติดตั้ง SSH และเซิร์ฟเวอร์ OpenSSH

การติดตั้ง Linux ส่วนใหญ่มี SSH ติดตั้งอยู่แล้วโดยค่าเริ่มต้น แต่ในกรณีที่ระบบของคุณไม่มี คุณสามารถติดตั้งได้โดยใช้ apt ของ Advanced Packaging Tool คำสั่ง:

sudo apt install ssh

หลังจากติดตั้ง SSH แล้ว คุณสามารถตรวจสอบเวอร์ชันได้โดยเรียกใช้ ssh คำสั่งด้วย -V ธง:

ssh -V
วิธีการตั้งค่าเซิร์ฟเวอร์ SFTP บน Linux

คุณสามารถติดตั้งเซิร์ฟเวอร์ OpenSSH บนระบบ Debian และ Ubuntu ได้ ตัวอย่างเช่น โดยใช้ apt คำสั่ง:

sudo apt install openssh-server

คุณสามารถทำเช่นเดียวกันบน Arch Linux โดยใช้ pacman คำสั่ง:

sudo pacman -S openssh

การสร้างผู้ใช้ กลุ่ม และไดเรกทอรีสำหรับ SFTP

เป็นคำแนะนำทั่วไปที่บริการต่างๆ บน Linux ควรใช้ผู้ใช้ กลุ่ม และไดเรกทอรีของตนเอง

เริ่มต้นด้วยการสร้างกลุ่มสำหรับผู้ใช้ SFTP ทำได้โดยใช้ groupadd คำสั่ง:

sudo groupadd sftp_group

คุณสามารถสร้างผู้ใช้และเพิ่มลงในกลุ่มที่สร้างโดยใช้ useradd คำสั่งและ -g ธงซึ่งใช้ในการระบุกลุ่มที่ผู้ใช้จะเป็นส่วนหนึ่งของ:

sudo useradd -g sftp_group sftp_user

หลังจากสร้างผู้ใช้แล้ว ให้กำหนดรหัสผ่านโดยใช้ passwd คำสั่ง:

sudo passwd sftp_user
วิธีการตั้งค่าเซิร์ฟเวอร์ SFTP บน Linux

สร้างไดเร็กทอรีเริ่มต้นสำหรับผู้ใช้ที่สร้างขึ้นใหม่:

sudo mkdir -p /data/sftp_user/uploaded_files

ใช้ chown คำสั่งให้สิทธิ์ที่จำเป็นแก่ไดเร็กทอรี:

sudo chown -R root:sftp_group /data/sftp_user
sudo chown -R sftp_user:sftp_group /data/sftp_user/uploaded_files

การกำหนดค่าเซิร์ฟเวอร์ SSH

ขั้นตอนต่อไปสำหรับการตั้งค่าเซิร์ฟเวอร์ SFTP คือการกำหนดค่าเซิร์ฟเวอร์ SSH ที่จะใช้

แก้ไขไฟล์ “sshd_config” ที่พบใน “/etc/ssh/” เพื่อให้ผู้ใช้ใช้เชลล์ SFTP เมื่อเชื่อมต่อกับเซิร์ฟเวอร์แทนเชลล์ของ SSH

คุณแก้ไขไฟล์ได้ง่ายๆ โดยใช้ตัวแก้ไข Nano ที่ใช้กันทั่วไปซึ่งพบในการติดตั้ง Linux หลายตัวตามค่าเริ่มต้น:

sudo nano /etc/ssh/sshd_config

ค้นหาด้านล่างของไฟล์และเพิ่มสิ่งต่อไปนี้:

Match Group sftp_group
ChrootDirectory /data/%u
ForceCommand internal-sftp
วิธีการตั้งค่าเซิร์ฟเวอร์ SFTP บน Linux

เริ่มบริการ SSH:

sudo systemtl restart sshd

(ไม่บังคับ) การเปลี่ยนพอร์ต SFTP

หากคุณต้องการเปลี่ยนพอร์ตที่เซิร์ฟเวอร์ SFTP ใช้จากค่าเริ่มต้น 22 เป็นตัวเลือกที่คุณเลือก คุณจะต้องแก้ไขไฟล์ “sshd_config” อีกครั้ง

แก้ไขไฟล์อีกครั้งโดยใช้โปรแกรมแก้ไข Nano:

sudo nano /etc/ssh/sshd_config

ค้นหาบรรทัดในไฟล์ที่มีค่าพอร์ตเริ่มต้นเป็น 22 แสดงความคิดเห็น:

#Port 22

คุณสามารถลบเครื่องหมายแฮช (#) ที่ใช้แสดงความเห็นในบรรทัดและเพิ่มค่าพอร์ตที่คุณเลือกได้ ในกรณีของฉัน ฉันกำลังเปลี่ยนค่าเป็น 1111:

Port 1111

ตอนนี้เพียงแค่บันทึกไฟล์

วิธีการตั้งค่าเซิร์ฟเวอร์ SFTP บน Linux

และรีสตาร์ทเซิร์ฟเวอร์:

sudo systemctl restart sshd

การเข้าสู่ระบบและการใช้เซิร์ฟเวอร์

W เซิร์ฟเวอร์ที่ติดตั้งและกำหนดค่าก็พร้อมใช้งาน คุณสามารถอัปโหลดไฟล์และดาวน์โหลดไฟล์ได้อย่างง่ายดาย ทั้งหมดนี้ด้วยเซสชันที่เข้ารหัสโดย SSH

ก่อนเข้าสู่ระบบ จะไม่เสียหายหากต้องดูคู่มือที่ให้มา:

sftp -h
วิธีการตั้งค่าเซิร์ฟเวอร์ SFTP บน Linux

เข้าสู่ระบบเซิร์ฟเวอร์โดยระบุชื่อผู้ใช้และ IP ของเซิร์ฟเวอร์หรือชื่อโฮสต์ในรูปแบบต่อไปนี้:

sftp USER@HOST

นอกจากนี้ คุณสามารถระบุพอร์ตที่เซิร์ฟเวอร์ SFTP ของคุณใช้อยู่ (ค่าเริ่มต้นคือ 22) โดยใช้ -P ธง:

sftp USER@HOST -P <PORT>

เมื่อคุณเข้าสู่ระบบ คุณจะได้รับการต้อนรับด้วยเชลล์ SFTP

ดูคู่มือโดยพิมพ์ help .

วิธีการตั้งค่าเซิร์ฟเวอร์ SFTP บน Linux

กำลังดาวน์โหลดไฟล์

ในการดาวน์โหลดไฟล์:

get /path/to/file/on/server

ตัวอย่าง:

get /bin/ls

การดำเนินการนี้จะดาวน์โหลดไปยังไดเร็กทอรีปัจจุบันของคุณ ซึ่งเป็นไดเร็กทอรีที่คุณเคยอยู่ในเครื่องก่อนที่คุณจะลงชื่อเข้าใช้เซิร์ฟเวอร์ ในการดาวน์โหลดไปยังไดเร็กทอรีท้องถิ่นเฉพาะ:

get /path/to/file/on/server /path/to/local/folder

ในการคัดลอกไดเร็กทอรี คุณต้องเพิ่ม -r พารามิเตอร์ ซึ่งย่อมาจาก recursive ไปยังคำสั่ง

get -r /bin /home/username/Desktop/bin
วิธีการตั้งค่าเซิร์ฟเวอร์ SFTP บน Linux

อย่าลืมเพิ่มชื่อสำหรับไดเร็กทอรีใหม่ที่คุณต้องการสร้างในเครื่อง เช่น “/home/username/Desktop/bin” ในกรณีนี้ หากคุณใช้ get -r /bin /home/username/Desktop ไฟล์จะถูกคัดลอกโดยตรงบนเดสก์ท็อป โปรดทราบว่า t เป็นไฟล์ที่คัดลอกมา ไม่ใช่ตัวไดเรกทอรีเอง

กำลังอัปโหลดไฟล์

การอัปโหลดไฟล์หรือไดเร็กทอรีเป็นไปตามหลักการเดียวกัน ข้อยกเว้นเพียงอย่างเดียวคือพาธจะกลับด้าน ซึ่งหมายความว่าคุณต้องระบุไฟล์/ไดเร็กทอรีในเครื่องก่อน จากนั้นจึงระบุพาธระยะไกล

เริ่มต้นด้วยการอัปโหลดไฟล์ไปยังเซิร์ฟเวอร์โดยใช้ put คำสั่ง:

put /path/to/local/content /path/to/remote/location

เมื่ออัปโหลดไดเร็กทอรี (แบบเรียกซ้ำ) โปรดจำไว้ว่าใช้กฎเดียวกันจากส่วนก่อนหน้านี้:เป็นไฟล์ในไดเร็กทอรีที่คัดลอกและไม่ใช่ตัวไดเร็กทอรีเอง ระบุชื่อใหม่สำหรับไดเร็กทอรีที่คุณต้องการคัดลอกไฟล์เหล่านั้นไป

put -r /home/username/Desktop/bin bin

สิ่งนี้จะสร้างไดเร็กทอรีใหม่ที่เรียกว่า "bin" ที่ด้านระยะไกล

ดำเนินการโอนต่อและใช้เส้นทางที่มีช่องว่าง

เมื่อคุณถ่ายโอนไฟล์ขนาดใหญ่ที่ถูกขัดจังหวะ คุณสามารถดำเนินการต่อโดยแทนที่คำสั่งก่อนหน้าด้วย reput และ reget . เพียงให้แน่ใจว่าคุณใช้เส้นทางเดียวกับที่คุณใช้ครั้งล่าสุดเพื่อให้ต้นทางและปลายทางตรงกันทุกประการ

reget /path/to/file/on/server /path/to/local/file
reput /path/to/local/file /path/to/file/on/server

หากต้องการดำเนินการถ่ายโอนไดเรกทอรีต่อ เพียงเพิ่ม -r พารามิเตอร์:

reput -r /home/username/Desktop/bin bin

หากพาธไปยังไฟล์มีช่องว่าง ให้ใส่ในเครื่องหมายคำพูด:

put "/home/username/My Documents/Files"

การใช้งานอื่นๆ

คุณสามารถแสดงรายการไฟล์และไดเร็กทอรีโดยใช้ ls คำสั่ง:

ls -l

สิทธิ์ของไฟล์ยังสามารถเปลี่ยนแปลงได้โดยใช้ chmod คำสั่ง:

chmod <PERMISSION> <FILE>

นอกจากนี้ คุณสามารถสร้างไดเร็กทอรีใหม่โดยใช้คำสั่ง mkdir:

mkdir <DIRECTORY_NAME>

คำถามที่พบบ่อย

1. ฉันจำเป็นต้องติดตั้งไคลเอ็นต์ SFTP หรือไม่

ในกรณีส่วนใหญ่ไม่มี เนื่องจากระบบ Linux ส่วนใหญ่จะมีไคลเอ็นต์ SFTP ที่ใช้เทอร์มินัลติดตั้งอยู่ตามค่าเริ่มต้น

2. ฉันใช้การตรวจสอบสิทธิ์คีย์สาธารณะได้ไหม

ได้ คุณสามารถใช้การพิสูจน์ตัวตนด้วยคีย์สาธารณะแทนรหัสผ่านเป็นวิธีการตรวจสอบสิทธิ์ได้ การตั้งค่านั้นค่อนข้างง่าย และให้ความปลอดภัยเพิ่มเติมสำหรับเซิร์ฟเวอร์ของคุณ

3. ฉันสามารถโฮสต์เซิร์ฟเวอร์ SSH พร้อมกันได้หรือไม่

ใช่. อย่างไรก็ตาม คุณจะต้องตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์ SFTP ของคุณไม่ได้ใช้พอร์ตเดียวกันกับเซิร์ฟเวอร์ SSH