Vsftpd (Very Secure FTP Daemon) 是 Linux 常用的 FTP 伺服器軟體,以安全、輕量著稱。本文記錄在 SUSE Linux (openSUSE/SLES) 上透過 YaST 安裝、啟動服務、切換至本地使用者模式、開放防火牆端口的完整流程,並解決「僅允許匿名登入」與「外部無法連線」兩大常見問題。
vsftpd,點擊 接受zypper install vsftpd
Vsftpd 預設以獨立模式運行(非 xinetd 管理)。
vsftpd,點擊 啟用 → 完成syslog 是否已啟動,必要時重啟 xinetd 再試systemctl enable vsftpd
systemctl start vsftpd
systemctl status vsftpd
現象:輸入本地帳號密碼提示 530 This FTP server is anonymous only
原因:預設配置 anonymous_enable=YES、local_enable=NO
解決:編輯 /etc/vsftpd.conf
# 允許本地使用者登入
local_enable=YES
# 可選:禁止匿名登入
anonymous_enable=NO
# 指定監聽端口(預設 21)
listen_port=21
# 寫入權限
write_enable=YES
# 限制使用者在家目錄(安全建議)
chroot_local_user=YES
allow_writeable_chroot=YES
重啟服務:systemctl restart vsftpd
現象:Connection closed by remote host 或 Connection timed out
原因:SUSE 防火牆 (SuSEfirewall2 / firewalld) 預設封鎖 FTP 端口 (20, 21)
解決:
20 21(空格分隔)firewall-cmd --permanent --add-service=ftp
firewall-cmd --permanent --add-port=20/tcp
firewall-cmd --reload
# 編輯 /etc/sysconfig/SuSEfirewall2
FW_SERVICES_EXT_TCP="21 20"
# 重啟防火牆
systemctl restart SuSEfirewall2
# 本機測試
ftp localhost
# 遠端測試
ftp 192.168.1.8
# 使用本地帳號登入,確認可上傳/下載檔案
pasv_min_port=40000、pasv_max_port=40100,並同步開放防火牆ssl_enable=YES,指定憑證檔案,強制加密傳輸pam_userdb 或 guest_enable=YES 實現非系統帳號 FTP 存取xferlog_enable=YES、log_ftp_protocol=YESVsftpd 在 SUSE 上部署的核心步驟:YaST 安裝 → 啟用獨立服務 → 修改 vsftpd.conf 允許本地使用者 → 開放防火牆 20/21 端口。此流程在其他發行版 (CentOS、Ubuntu、Debian) 亦同理可循,僅套件管理器與防火牆工具不同。