aptssh root@your-server-ip
yum install -y vsftpd
# 備份原配置
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
# 關閉匿名登入(安全基線)
sed -i 's/^anonymous_enable=YES/anonymous_enable=NO/' /etc/vsftpd/vsftpd.conf
# 開機自啟(Runlevel 3/5)
chkconfig --level 35 vsftpd on
# systemd 系統改用:systemctl enable vsftpd
# 格式:useradd <用戶名> -s /sbin/nologin -d <家目錄>
useradd ftpuser -s /sbin/nologin -d /www
# 設定密碼
passwd ftpuser
# 輸入兩次密碼
# 確保目錄存在且屬於 ftpuser
mkdir -p /www
chown ftpuser:ftpuser /www
chmod 755 /www # 777 極不安全,切勿使用
service vsftpd start
# 或 systemctl start vsftpd
# 本機測試
ftp localhost
# 或使用 FileZilla、WinSCP、lftp 等客戶端連線測試
原因: 預設配置 /etc/vsftpd/ftpusers 與 /etc/vsftpd/user_list 含有 root 等系統帳號,若您建立的帳號名稱在列表中,或 PAM 設定不當。
解決:
# 編輯兩個檔案,將您的 FTP 帳號註解或移除
vi /etc/vsftpd/ftpusers
vi /etc/vsftpd/user_list
# 找到您的帳號行,前面加 # 註解
# 重啟服務
service vsftpd restart
排查步驟:
service iptables stop 暫停測試(生產環境請改用 firewall-cmd --add-service=ftp 永久開放)ping ,不通則檢查:ifconfig eth0 up)getsebool -a | grep ftp,若 ftp_home_dir=off 需 setsebool -P ftp_home_dir=1netstat -nlap | grep :21 確認進程監聽解決: 配置被動模式固定埠口範圍並開放防火牆:
# /etc/vsftpd/vsftpd.conf 追加
pasv_enable=YES
pasv_min_port=50000
pasv_max_port=51000
# 防火牆開放
firewall-cmd --permanent --add-port=50000-51000/tcp
firewall-cmd --reload
| 模式 | 適用場景 | 宿主機↔客戶機連通性 |
|---|---|---|
| NAT | 客戶機只需上網,宿主機無需直接連線 | 需配置埠轉發 |
| Host-only | 宿主機需直接 SSH/FTP 連線客戶機 | 直通,推薦本地開發測試 |
| 橋接 | 客戶機作為區域網獨立設備 | 直通,需 DHCP/靜態 IP 同網段 |
Host-only 設定步驟:
ifconfig 確認 IP(如 192.168.100.128)ping 192.168.100.128 驗證連通anonymous_enable=NO)/sbin/nologin 禁止 Shell 登入chroot_local_user=YES + allow_writeable_chroot=YES)ssl_enable=YES)max_clients、max_per_ip、local_max_rate)xferlog_enable=YES、log_ftp_protocol=YES)tcp_wrappers=YES + /etc/hosts.allow)按照本文流程,您可在 10 分鐘內完成一個安全、可用的 Linux FTP 服務器部署。遇到問題時,按「防火牆 → 網路 → SELinux → 配置 → 日誌」順序系統性排查,多數情況可快速定位根因。