1、使用 vsftpd 在 Linux 服务器上搭建 FTP(最常用)
2、重要提醒:为什么以及如何启用更安全的 FTPS 或 SFTP
第一部分:使用 vsftpd 在 Linux 上搭建 FTP(Ubuntu/CentOS 为例)
vsftpd
(Very Secure FTP Daemon)是 Linux 上最流行、最安全的 FTP 服务器软件。
通过 SSH 连接到您的服务器,然后使用包管理器安装。
Ubuntu/Debian:
sudo apt update sudo apt install vsftpd
CentOS/RHEL/Fedora:
sudo yum install vsftpd # 或者使用 dnf (新版本的 Fedora/CentOS) sudo dnf install vsftpd
安装完成后,启动服务并设置为开机自动启动。
sudo systemctl start vsftpd sudo systemctl enable vsftpd
主要的配置文件是/etc/vsftpd.conf
,在修改之前,最好先备份一下。
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig
然后使用文本编辑器(如nano
或vim
) 编辑配置文件:
sudo nano /etc/vsftpd.conf
找到并修改以下配置行,或者如果它们被注释了(以#
开头),请取消注释并修改为如下值:
禁止匿名登录(除非您需要) anonymous_enable=NO 允许本地系统用户登录 local_enable=YES 允许用户上传(写入)文件 write_enable=YES 设置本地用户创建新文件或目录的默认权限 local_umask=022 有些客户端需要这个设置来正常工作 allow_writeable_chroot=YES 将用户限制在其家目录中(非常重要的安全设置!) chroot_local_user=YES 可选:定义一个例外用户列表文件(如果上面设置为YES,则列表中的用户不被限制) chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_list 启用被动模式(PASV)设置,这对在防火墙/NAT后的服务器至关重要 pasv_enable=YES pasv_min_port=30000 pasv_max_port=31000 将 pasv_address 设置为您服务器的公网IP地址,否则客户端可能无法连接 pasv_address=你的服务器公网IP
保存并退出编辑器。
如果您的服务器开启了防火墙(如ufw
或firewalld
),需要放行 FTP 端口。
控制端口(默认 21)
被动模式端口范围(上面设置的 30000-31000)
对于 UFW (Ubuntu):
sudo ufw allow 21/tcp sudo ufw allow 30000:31000/tcp sudo ufw reload
对于 Firewalld (CentOS/RHEL):
sudo firewall-cmd --permanent --add-port=21/tcp sudo firewall-cmd --permanent --add-port=30000-31000/tcp sudo firewall-cmd --reload
最好为 FTP 创建一个专用的系统用户,而不是直接使用 root 账户。
1、创建用户(例如用户名为ftpuser
)并设置密码:
sudo useradd -m ftpuser sudo passwd ftpuser
(系统会提示您输入并确认新密码)
2、(可选)如果您想限制用户只能通过 FTP 访问,而不能通过 SSH 登录 shell,可以修改其 shell:
sudo usermod -s /usr/sbin/nologin ftpuser
步骤 6:重启 vsftpd 服务使配置生效
sudo systemctl restart vsftpd
您可以使用任何 FTP 客户端(如FileZilla,WinSCP, 或浏览器)进行测试。
主机/地址 您的服务器公网 IP 地址
用户名ftpuser
密码 您设置的密码
端口21
(默认)
第二部分:重要安全提醒与增强(FTPS / SFTP)
传统 FTP 协议是不安全的,因为它以明文方式传输所有数据(包括用户名和密码),在任何公共网络(如互联网)上使用都非常危险。
您有兩個更安全的選擇:
选项 A:启用 FTPS(FTP over SSL/TLS)
这为 FTP 连接添加了加密层,继续编辑/etc/vsftpd.conf
文件:
启用 SSL ssl_enable=YES 强制使用 SSL 进行数据和登录连接(更安全) allow_anon_ssl=NO force_local_data_ssl=YES force_local_logins_ssl=YES 指定 SSL 证书和密钥文件的位置 rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
您可以使用系统自带的 snakeoil 证书进行测试,但对于生产环境,请使用来自 Let's Encrypt 或其他 CA 的有效证书,并将路径指向您的证书(.crt
或.pem
)和私钥(.key
)文件。
在 FTP 客户端中,您需要选择FTPS (显式加密) 连接模式。
选项 B:【强烈推荐】使用 SFTP(SSH File Transfer Protocol)
SFTP 是 SSH 的一部分,它通过已有的 SSH 连接提供安全的文件传输。如果您的服务器已经开启了 SSH(几乎所有服务器都默认开启),SFTP 已经可用了!
如何使用 SFTP:
1、 您不需要安装任何额外的软件(如vsftpd
)。
2、 使用任何 SFTP 客户端(如 FileZilla, WinSCP)。
3、 连接信息:
主机 您的服务器公网 IP
协议SFTP - SSH File Transfer Protocol
端口22
(SSH 默认端口)
用户名/密码 使用您的系统用户(如前面创建的ftpuser
)和密码。
SFTP 的优势:
极其安全所有通信都通过加密的 SSH 隧道进行。
无需额外配置无需管理另一个服务和另一套防火墙规则。
更简单只需要管理 SSH 访问即可。
1、基本 FTP:按照第一部分操作,但仅建议在绝对安全的内网环境中使用纯 FTP。
2、安全选择:对于任何通过互联网的连接,强烈建议您直接使用 SFTP(无需安装vsftpd
),或者按照选项 A 配置FTPS。
如果您不确定该用哪个,选择 SFTP 几乎总是最简单和最安全的选择,只需使用您的 SSH 账户信息通过 SFTP 协议连接即可。
文章摘自:https://idc.huochengrm.cn/fwq/15005.html
评论
蛮梦寒
回复在服务器上搭建FTP服务,需先安装配置ftp服务器软件如vsftpd或FileZilla等,设置用户权限及目录访问规则后启动并测试连接是否正常即可使用上传下载文件功能了!