在云主机上架设FTP服务并发布网站:清晰指南
准备工作:
1、获取云主机信息: 你需要知道:
云主机的公网IP地址
系统管理员用户名 (通常是root
或你创建的用户名)
SSH登录密码或密钥
2、选择FTP服务器软件: Linux下常用且可靠的是vsftpd
(Very Secure FTP Daemon)。
3、本地FTP客户端: 如 FileZilla (免费开源)、WinSCP (Windows) 或 Cyberduck (Mac),推荐 FileZilla 作为通用选择。
打开你的终端 (Windows: PowerShell 或 CMD; Mac/Linux: Terminal)。
使用ssh
命令连接
ssh 你的用户名@你的云主机IP地址
输入密码 (输入时不会显示字符),或使用密钥认证登录。
更新软件包列表
sudo apt update # Debian/Ubuntu # 或 sudo yum update # CentOS/RHEL
安装vsftpd
sudo apt install vsftpd # Debian/Ubuntu # 或 sudo yum install vsftpd # CentOS/RHEL
1、备份原始配置文件 (好习惯):
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
2、编辑配置文件:
sudo nano /etc/vsftpd.conf # 推荐使用 nano, 或使用 vi/vim
3、修改关键配置项 (找到并修改或取消注释):
anonymous_enable=NO
(重要!禁止匿名登录,提升安全)
local_enable=YES
(允许本地系统用户登录)
write_enable=YES
(允许用户上传文件 - 发布网站必须)
chroot_local_user=YES
(将用户限制在其主目录内,防止访问系统文件 - 安全必备)
允许被动模式 (PASV) 连接 (解决客户端连接问题)
pasv_enable=YES pasv_min_port=60000 # 设置一个端口范围 (60000-61000) pasv_max_port=61000 pasv_address=你的云主机公网IP地址 # 必须设置为你云主机的公网IP
(可选但推荐) 添加用户列表限制 (仅允许指定用户使用FTP)
userlist_enable=YES userlist_file=/etc/vsftpd.user_list userlist_deny=NO # 仅允许 user_list 文件中的用户登录
然后创建/etc/vsftpd.user_list
文件,每行一个允许的FTP用户名 (例如your_ftp_user
)。
4、保存并退出编辑器 (在 nano 中:Ctrl+X
, 然后Y
, 然后Enter
)。
1、创建专用FTP用户 (推荐,更安全):
sudo adduser your_ftp_user # 按提示设置密码和其他信息(可回车跳过)
2、设置用户主目录权限 (关键!):
vsftpd 在chroot_local_user=YES
时,要求用户主目录不能有写权限给其他用户,且用户不能拥有主目录的写权限 (一个安全限制),常用做法是
sudo mkdir /home/your_ftp_user/www # 在实际存放网站文件的目录 sudo chown your_ftp_user:your_ftp_user /home/your_ftp_user/www # 所有权给用户 sudo chmod 755 /home/your_ftp_user # 用户主目录权限 rwxr-xr-x sudo chmod -R 755 /home/your_ftp_user/www # 网站目录权限(755通常足够,如程序需写再调)
* 这样用户your_ftp_user
登录FTP后会被锁定在/home/your_ftp_user
,且只能在其下的www
目录上传/下载文件 (因为www
目录的所有权是它),如果需要用户能创建目录/文件,确保www
目录或其子目录对用户有写权限 (chmod 775 www
或更精细控制)。
云主机通常有安全组/防火墙规则,你需要开放端口
FTP 命令端口21 (TCP)
FTP 被动模式端口范围 你在配置文件中设置的 (如60000-61000 TCP)
在你的云服务商控制台 (如阿里云、腾讯云、AWS 的安全组) 添加入站规则允许这些端口。
1、重启服务使配置生效:
sudo systemctl restart vsftpd
2、设置开机自启:
sudo systemctl enable vsftpd
3、本地FTP客户端测试:
* 打开 FileZilla。
主机输入你的云主机公网IP地址。
用户名your_ftp_user
密码你设置的密码。
端口21 (默认)。
* 点击快速连接。
* 成功连接后,右侧应显示用户主目录 (/home/your_ftp_user
),尝试上传一个测试文件到www
目录。
使用FTP客户端 (如 FileZilla)
1. 左侧 (本地站点):浏览到你本地电脑上的网站文件夹 (包含index.html
,images
文件夹等)。
2. 右侧 (远程站点):进入/www
目录 (或你设定的网站根目录)。
3.将本地网站文件夹中的所有内容 (注意不是文件夹本身,除非你需要那个结构)拖拽到右侧的远程/www
目录中。
上传完成后,访问你的域名 (需已解析到云主机IP),应该就能看到网站了!
FTP 本身不安全 它明文传输用户名、密码和所有文件内容!容易被窃听。
强烈推荐替代方案
SFTP (SSH File Transfer Protocol) 使用 SSH 加密通道传输文件,大多数云主机默认开启 SSH (端口 22),直接使用 FileZilla 等客户端选择SFTP 协议 (主机填IP,端口22,用户名密码同SSH),无需额外安装 FTP 服务器!这是目前最推荐、最安全便捷的方式。
FTPS (FTP over SSL/TLS) 为 FTP 添加 SSL/TLS 加密层,配置比 SFTP 复杂很多 (vsftpd
需要额外证书和配置),安全性也不及 SFTP 普遍认可。
如果必须使用 FTP
绝不使用 root 用户登录 FTP! 务必创建专用低权限用户。
务必设置强密码!
务必使用chroot_local_user=YES
限制用户目录。
严格控制防火墙,只开放必要的端口给必要的IP。
* 考虑使用userlist
限制可登录用户。
个人观点: 对于云主机部署网站,SFTP 是绝对的首选方案,它利用现有的、安全的 SSH 服务,无需额外安装配置复杂的 FTP 服务器,天然加密且被广泛支持,除非有非常特定的遗留系统要求,否则直接使用 SFTP 上传和管理文件是更明智、更安全、更高效的选择,将精力放在网站内容和安全防护上,远比折腾过时的 FTP 协议有价值得多,现在就去检查你的连接方式吧!
文章摘自:https://idc.huochengrm.cn/zj/12299.html
评论