- 1. ตรวจสอบรุ่นและชื่อเครือข่าย
- 2. ตั้งค่า IPv4 แบบคงที่ด้วย nmcli
- 3. เปิด SSH Server และ SFTP
- 4. ติดตั้ง FTP Server ด้วย vsftpd (อ่านอย่างเดียว)
- 5. แก้ปัญหาเบื้องต้น
- แหล่งอ้างอิง

CentOS Stream ใช้ NetworkManager จัดการเครือข่าย, OpenSSH สำหรับการเชื่อมต่อระยะไกลและ SFTP, และ vsftpd เมื่อจำเป็นต้องเปิด FTP แบบเดิม บทความนี้ตั้งค่า FTP สำหรับดาวน์โหลดแบบ anonymous และอ่านอย่างเดียว ส่วนการอัปโหลดไฟล์และการยืนยันตัวตนให้ใช้ SFTP ผ่าน SSH เพราะ FTP ปกติไม่เข้ารหัสชื่อผู้ใช้ รหัสผ่าน หรือข้อมูล
ก่อนเริ่ม: ต้องมีสิทธิ์
sudoและเข้าถึงคอนโซล VM/เครื่องจริงได้หากเปลี่ยน IP แล้ว SSH หลุด ตรวจสอบ IP ที่จะใช้ว่าไม่ซ้ำกับเครื่องอื่น หากเซิร์ฟเวอร์อยู่บนคลาวด์ ให้เปิดพอร์ตใน security group หรือ cloud firewall เพิ่มตามจำเป็น ตัวอย่างด้านล่างใช้192.168.10.50/24และ gateway192.168.10.1ซึ่งต้องเปลี่ยนให้ตรงเครือข่ายของคุณ
#1. ตรวจสอบรุ่นและชื่อเครือข่าย
cat /etc/centos-release
nmcli device status
nmcli connection show --active
ip -br address
ip route
ชื่อ DEVICE เช่น enp1s0 เป็นชื่อการ์ดเครือข่าย ส่วนชื่อ NAME ของ connection profile อาจเป็น System enp1s0 หรือชื่ออื่น อย่าสมมติว่าสองชื่อนี้ตรงกัน
| รายการตัวอย่าง | ค่า |
|---|---|
| Connection profile | System enp1s0 |
| Network interface | enp1s0 |
| IP/CIDR | 192.168.10.50/24 |
| Default gateway | 192.168.10.1 |
| DNS | 1.1.1.1 และ 8.8.8.8 |
#2. ตั้งค่า IPv4 แบบคงที่ด้วย nmcli
กำหนดชื่อ profile และ interface ตามผลที่เครื่องของคุณแสดง ก่อนเรียกคำสั่งอื่น:
CON_NAME='System enp1s0'
IFACE='enp1s0'
sudo nmcli connection modify "$CON_NAME" \
ipv4.method manual \
ipv4.addresses 192.168.10.50/24 \
ipv4.gateway 192.168.10.1 \
ipv4.dns '1.1.1.1 8.8.8.8'
sudo nmcli connection up "$CON_NAME"
/24 หมายถึง subnet mask 255.255.255.0 หากใช้ SSH เชื่อมต่ออยู่ คำสั่ง connection up อาจตัดการเชื่อมต่อเดิม ให้ใช้คอนโซลของ VM/ผู้ให้บริการหรือเตรียมเข้าทาง IP ใหม่ไว้ก่อน และตรวจสอบว่าระบุ gateway อยู่ใน subnet เดียวกัน
ตรวจสอบค่าหลังเปิด profile:
ip -4 address show dev "$IFACE"
ip -4 route show default
nmcli -f IP4.ADDRESS,IP4.GATEWAY,IP4.DNS device show "$IFACE"
ping -c 3 192.168.10.1
หากต้องกลับไปใช้ DHCP ให้ทำจาก คอนโซล เมื่อยังเข้าเครื่องได้:
sudo nmcli connection modify "$CON_NAME" \
ipv4.method auto ipv4.addresses '' ipv4.gateway '' ipv4.dns ''
sudo nmcli connection up "$CON_NAME"
ไม่จำเป็นต้องแก้ไฟล์
/etc/resolv.confโดยตรง เพราะ DNS ของ connection profile อยู่ภายใต้การจัดการของ NetworkManager
#3. เปิด SSH Server และ SFTP
หากกำลังเข้าเครื่องผ่าน SSH: การเปิด
firewalldอาจเปลี่ยนกฎที่ใช้กับ interface และทำให้การเชื่อมต่อหลุด ตรวจสอบ zone และสิทธิ์เข้า TCP 22 จากคอนโซลของ VM/เครื่องจริงก่อนเปิด firewall หรือทำขั้นตอนนี้ผ่านคอนโซลโดยตรง
ติดตั้งและเปิดบริการ SSH:
sudo dnf install -y openssh-server firewalld
sudo systemctl enable --now sshd
sudo systemctl enable --now firewalld
sudo systemctl status sshd --no-pager
ตรวจสอบ firewall zone ที่ผูกกับ interface; ตัวอย่างต่อไปนี้ใช้ค่า zone ที่เครื่องแสดง หากเป็น public ให้ใช้ ZONE=public:
sudo firewall-cmd --get-active-zones
ZONE=public
sudo firewall-cmd --zone="$ZONE" --add-service=ssh --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --zone="$ZONE" --list-services
จากเครื่องลูกข่าย เช่น macOS, Linux หรือ PowerShell ที่มี OpenSSH:
ssh youruser@192.168.10.50
sftp youruser@192.168.10.50
ssh ใช้ล็อกอินและสั่งงาน ส่วน sftp ใช้โอนไฟล์ผ่านช่องทาง SSH ที่เข้ารหัส ทั้งคู่ใช้ TCP 22 ในตัวอย่างนี้ SFTP ไม่ใช่ FTP ที่เปลี่ยนพอร์ต และไม่ต้องติดตั้ง vsftpd หากต้องการเพียงโอนไฟล์อย่างปลอดภัย
#เพิ่มการยืนยันตัวตนด้วย SSH key (แนะนำ)
บน เครื่องลูกข่าย สร้าง key แล้วคัดลอก public key ไปยังบัญชีบนเซิร์ฟเวอร์:
ssh-keygen -t ed25519
ssh-copy-id youruser@192.168.10.50
ssh youruser@192.168.10.50
หากจะปิดการล็อกอินด้วยรหัสผ่าน ให้ทดสอบการเข้าเครื่องด้วย key จาก หน้าต่างใหม่ ให้สำเร็จก่อน และคงหน้าต่าง SSH เดิมไว้ จากนั้นแก้ /etc/ssh/sshd_config ให้มี PasswordAuthentication no และ KbdInteractiveAuthentication no, ตรวจด้วย sudo sshd -t, โหลดใหม่ด้วย sudo systemctl reload sshd, และตรวจค่าที่มีผลจริงด้วย sudo sshd -T โดยเฉพาะเมื่อมีไฟล์ใน sshd_config.d ห้ามปิดรหัสผ่านก่อนยืนยันว่า key ใช้งานได้
#4. ติดตั้ง FTP Server ด้วย vsftpd (อ่านอย่างเดียว)
กรณีนี้เหมาะกับการแจกไฟล์ในเครือข่ายที่ควบคุมได้ โดยลูกค้าเชื่อมต่อแบบ anonymous และ อัปโหลดไม่ได้ ถ้าต้องล็อกอินหรืออัปโหลด ให้ใช้ SFTP ตามหัวข้อ 3
sudo dnf install -y vsftpd
sudo cp -a /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
sudoedit /etc/vsftpd/vsftpd.conf
ค้นหาบรรทัดเดิมแล้วแก้ให้เหลือคำสั่งแต่ละรายการเพียงครั้งเดียว โดย คงค่าอื่นที่ distribution จัดมาไว้:
anonymous_enable=YES
local_enable=NO
write_enable=NO
anon_upload_enable=NO
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=40010
ตัวอย่างนำไฟล์ออกให้ดาวน์โหลด:
sudo install -d -m 755 /var/ftp/pub
printf 'CentOS Stream FTP test\n' | sudo tee /var/ftp/pub/hello.txt >/dev/null
sudo chmod 644 /var/ftp/pub/hello.txt
sudo restorecon -Rv /var/ftp
sudo systemctl enable --now vsftpd
sudo systemctl restart vsftpd
sudo systemctl status vsftpd --no-pager
เพิ่มบริการ FTP (TCP 21) และช่วงพอร์ตสำหรับ passive data connection ใน firewall zone เดียวกับ interface:
sudo firewall-cmd --zone="$ZONE" --add-service=ftp --permanent
sudo firewall-cmd --zone="$ZONE" --add-port=40000-40010/tcp --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --zone="$ZONE" --list-all
จากเครื่องลูกข่ายทดสอบดาวน์โหลดไฟล์:
curl --fail --show-error --noproxy '*' \
ftp://192.168.10.50/pub/hello.txt \
--output hello-downloaded.txt
cat hello-downloaded.txt
ถ้าอยู่หลัง NAT/เราเตอร์ ต้อง forward ทั้ง TCP 21 และช่วง passive ports ไปยังเครื่อง FTP และอาจต้องตั้ง pasv_address เป็น IP ภายนอก (หรือชื่อ DNS ร่วมกับ pasv_addr_resolve=YES) ตามการเข้าถึงจริง เปิดพอร์ตดังกล่าวใน cloud firewall ด้วยหากใช้งานบนคลาวด์ การทดลองใน LAN เดียวกันมักไม่ต้องตั้งค่านี้
#5. แก้ปัญหาเบื้องต้น
| อาการ | ตรวจสอบ |
|---|---|
| ตั้ง IP แล้วเข้าเครื่องไม่ได้ | ตรวจ nmcli connection show --active, ip -4 address, gateway, IP ซ้ำ และเครือข่ายของ VM; เข้าแก้ผ่านคอนโซล |
| SSH เข้าไม่ได้ | ตรวจ systemctl status sshd, sudo sshd -t, firewall-cmd --get-active-zones, cloud firewall และ IP ใหม่ |
| FTP ต่อได้แต่แสดงรายการ/ดาวน์โหลดไม่ได้ | ตรวจ pasv_min_port, pasv_max_port, zone, NAT และ cloud firewall |
| FTP เปิดไฟล์ไม่ได้ | ตรวจสิทธิ์ /var/ftp/pub, ls -Z /var/ftp/pub และ sudo journalctl -u vsftpd -b --no-pager; ใช้ restorecon แก้ context ตามค่าเริ่มต้น |
| ต้องส่งไฟล์โดยใช้บัญชีผู้ใช้ | ใช้ sftp youruser@server แทนการเปิด local login ใน FTP ที่ไม่เข้ารหัส |
สรุป: ตั้ง IP ด้วย nmcli → เปิด sshd และ TCP 22 → ใช้ SFTP เมื่อมีการล็อกอินหรือส่งไฟล์ → เปิด vsftpd แบบอ่านอย่างเดียวพร้อม TCP 21 และ passive ports เมื่อจำเป็นต้องรองรับ FTP
#แหล่งอ้างอิง
- CentOS Stream 10 release notes — อธิบายรุ่นและการใช้เอกสาร RHEL 10 ประกอบกับ CentOS Stream
- Red Hat: Configuring Ethernet connections with nmcli (RHEL 9)
- Red Hat: OpenSSH and SFTP (RHEL 10)
- Red Hat: Firewalld predefined services (RHEL 10)
- Red Hat: Installing vsftpd and opening passive FTP ports (RHEL 10)
- Red Hat: Security of FTP user accounts (RHEL 10)