主题
FTP服务部署指南
🚀 FTP服务安装步骤
📋 1. 实验环境准备
需要两台虚拟机,一台作为FTP服务器,一台作为客户端
null
🔧 2. 安装FTP服务
安装之前先执行:更换源方法
bash
# 安装vsftpd服务
yum install vsftpd -y
# 查看安装的包
rpm -qa | grep vsftpd
# 查看vsftpd版本
vsftpd -v1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
🚀 3. 配置网络环境
3.1 设置固定IP
将FTP服务器设置为固定IP:固定IP设置方法
bash
# FTP服务器配置示例
IP地址:192.168.4.128
子网掩码:255.255.255.0
网关:192.168.4.2
DNS:192.168.4.21
2
3
4
5
2
3
4
5
3.2 关闭防火墙或配置防火墙
bash
# 方法1:关闭防火墙(学习环境推荐)
systemctl stop firewalld # 关闭防火墙
systemctl disable firewalld
# 方法2:开放FTP端口(生产环境推荐)
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload
# 关闭SELinux
setenforce 01
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
🔧 FTP配置步骤
📋 4. 配置主配置文件
vsftpd的主要配置文件位于 /etc/vsftpd/ 目录:
bash
# 查看配置目录结构
ls -la /etc/vsftpd/
ls -la /etc/
# 主要配置文件:
# /etc/vsftpd/vsftpd.conf - 主配置文件
# /etc/vsftpd/ftpusers - 禁止登录FTP的用户列表
# /etc/vsftpd/user_list - 用户访问控制列表1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
4.1 备份并编辑主配置文件
bash
# 备份原始配置文件
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.backup
# 编辑主配置文件
vim /etc/vsftpd/vsftpd.conf1
2
3
4
5
2
3
4
5
修改后的主配置文件内容:
bash
# /etc/vsftpd/vsftpd.conf
# 基本设置
anonymous_enable=YES # 允许匿名用户访问
local_enable=YES # 允许本地用户访问
write_enable=YES # 允许写入权限
local_umask=022 # 本地用户创建文件的umask值
# 匿名用户设置
anon_upload_enable=YES # 允许匿名用户上传文件
anon_mkdir_write_enable=YES # 允许匿名用户创建目录
anon_other_write_enable=YES # 允许匿名用户其他写入权限
# 日志和消息
xferlog_enable=YES # 启用传输日志
xferlog_std_format=YES # 使用标准日志格式
connect_from_port_20=YES # 使用20端口进行数据连接
# 监听设置
listen=YES # 独立模式运行
listen_ipv6=NO # 不监听IPv6
# 用户控制
pam_service_name=vsftpd # PAM服务名称
userlist_enable=YES # 启用用户列表
userlist_deny=NO # user_list为允许列表(设置为YES为拒绝列表)
tcp_wrappers=YES # 启用tcp_wrappers
# 被动模式设置
pasv_enable=YES # 启用被动模式
pasv_min_port=30000 # 被动模式最小端口
pasv_max_port=31000 # 被动模式最大端口
# 目录设置
anon_root=/var/ftp # 匿名用户根目录
local_root=/home/ftp # 本地用户根目录1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
🌐 5. 创建FTP用户和目录
5.1 创建匿名FTP目录
bash
# 创建匿名FTP目录
mkdir -p /var/ftp/pub
# 设置目录权限
chmod 755 /var/ftp
chmod 755 /var/ftp/pub
# 创建测试文件
echo "Welcome to FTP Server!" > /var/ftp/pub/welcome.txt
echo "This is a test file for anonymous users." > /var/ftp/pub/test.txt
# 设置SELinux上下文(如果SELinux开启)
setsebool -P ftpd_anon_write on
setsebool -P ftpd_full_access on1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
5.2 创建FTP专用用户
bash
# 创建FTP专用用户
useradd -d /home/ftpuser -s /sbin/nologin ftpuser
# 设置用户密码
passwd ftpuser
# 输入密码:ftp123
# 创建用户FTP目录
mkdir -p /home/ftpuser/{public,private}
chown -R ftpuser:ftpuser /home/ftpuser
chmod 755 /home/ftpuser
chmod 755 /home/ftpuser/public
chmod 700 /home/ftpuser/private
# 创建测试文件
echo "Welcome to private FTP area!" > /home/ftpuser/private/private.txt
echo "Public file for sharing" > /home/ftpuser/public/share.txt1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
5.3 配置用户访问控制
bash
# 编辑用户列表文件
vim /etc/vsftpd/user_list1
2
2
在user_list中添加允许访问的用户:
bash
# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file
ftpuser
root1
2
3
4
5
2
3
4
5
⚙️ 6. 设置文件权限
bash
# 设置匿名FTP目录权限
chown -R ftp:ftp /var/ftp/pub
chmod -R 755 /var/ftp
# 设置用户目录权限
chown -R ftpuser:ftpuser /home/ftpuser
# 设置配置文件权限
chmod 600 /etc/vsftpd/vsftpd.conf1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
✅ 7. 启动FTP服务
bash
# 启动FTP服务
systemctl start vsftpd
systemctl enable vsftpd
# 检查服务状态
systemctl status vsftpd
# 检查端口监听
netstat -tlnp | grep :21
ss -tlnp | grep :211
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
🧪 FTP测试方法
🌐 8. 服务器端测试
在FTP服务器上测试:
bash
# 检查FTP服务状态
systemctl status vsftpd
# 检查端口监听
netstat -tlnp | grep :21
ss -tlnp | grep :21
# 检查vsftpd进程
ps aux | grep vsftpd
# 测试本地连接
ftp localhost1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
🌍 9. 客户端测试
9.1 使用ftp命令测试
bash
# 匿名用户登录测试
ftp 192.168.4.128
# 用户名:anonymous
# 密码:(直接回车或输入邮箱)
# 本地用户登录测试
ftp 192.168.4.128
# 用户名:ftpuser
# 密码:ftp1231
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
9.2 使用lftp命令测试(推荐)
bash
# 安装lftp客户端
yum install lftp -y
# 匿名用户测试
lftp ftp://anonymous@192.168.4.128
# 密码:直接回车
# 本地用户测试
lftp ftp://ftpuser:ftp123@192.168.4.128
# 在lftp中的常用命令
ls # 列出文件
get welcome.txt # 下载文件
put testfile.txt # 上传文件
mkdir testdir # 创建目录
cd pub # 切换目录
quit # 退出1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
📸 10. 预期测试结果
匿名用户登录测试结果:
bash
[root@client ~]# ftp 192.168.4.128
Connected to 192.168.4.128 (192.168.4.128).
220 (vsFTPd 3.0.2)
Name (192.168.4.128:root): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (192,168,4,128,117,84).
150 Here comes the directory listing.
drwxr-xr-x 2 0 0 4096 Dec 16 10:30 pub
226 Directory send OK.
ftp> cd pub
250 Directory successfully changed.
ftp> ls
227 Entering Passive Mode (192,168,4,128,117,85).
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 25 Dec 16 10:30 test.txt
-rw-r--r-- 1 0 0 26 Dec 16 10:30 welcome.txt
226 Directory send OK.
ftp> get welcome.txt
local: welcome.txt remote: welcome.txt
227 Entering Passive Mode (192,168,4,128,117,86).
150 Opening BINARY mode data connection for welcome.txt (26 bytes).
226 Transfer complete.
26 bytes received in 0.00011 secs (236.36 Kbytes/sec)
ftp> quit
221 Goodbye.1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
本地用户登录测试结果:
bash
[root@client ~]# lftp ftp://ftpuser@192.168.4.128
Password:
cd ok, cwd=/home/ftpuser
lftp ftpuser@192.168.4.128:~> ls
-rw-r--r-- 1 1000 1000 25 Dec 16 10:35 private.txt
drwxr-xr-x 2 1000 1000 4096 Dec 16 10:35 public
lftp ftpuser@192.168.4.128:~> cd public
cd ok, cwd=/home/ftpuser/public
lftp ftpuser@192.168.4.128:~/public> ls
-rw-r--r-- 1 1000 1000 24 Dec 16 10:35 share.txt
lftp ftpuser@192.168.4.128:~/public> get share.txt
24 bytes transferred
lftp ftpuser@192.168.4.128:~/public> quit1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
🔍 11. 远程测试
在Windows宿主机上测试:
使用Windows资源管理器:
- 打开文件资源管理器
- 在地址栏输入:
ftp://192.168.4.128 - 匿名登录:直接回车
- 本地用户登录:右键 → 登录 → 输入用户名和密码
使用命令行测试:
cmdftp 192.168.4.128 anonymous ftp 192.168.4.128 ftpuser1
2
3
4使用FileZilla等FTP客户端:
- 主机:192.168.4.128
- 端口:21
- 用户名:anonymous 或 ftpuser
- 密码:(空)或 ftp123
📊 服务状态检查
📋 12. 运行状态检查
bash
# 检查服务状态
systemctl status vsftpd
systemctl is-active vsftpd
# 检查日志
tail -f /var/log/vsftpd.log
tail -f /var/log/secure | grep vsftpd
journalctl -u vsftpd -f
# 检查端口监听
netstat -tlnp | grep :21
lsof -i :21
# 检查进程
ps aux | grep vsftpd
# 检查配置文件
vsftpd /etc/vsftpd/vsftpd.conf1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
🔧 故障排除
🛠️ 13. 常见问题解决
13.1 服务启动失败
bash
# 检查配置文件语法
vsftpd /etc/vsftpd/vsftpd.conf
# 查看详细错误信息
journalctl -u vsftpd
cat /var/log/messages | grep vsftpd
# 检查端口占用
netstat -tlnp | grep :211
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
13.2 无法连接FTP服务器
bash
# 检查防火墙设置
systemctl status firewalld
firewall-cmd --list-all
# 检查网络连通性
ping 192.168.4.128
telnet 192.168.4.128 21
# 检查SELinux状态
getenforce
sestatus1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
13.3 权限问题
bash
# 检查目录权限
ls -la /var/ftp/
ls -la /home/ftpuser/
# 检查SELinux上下文
ls -Z /var/ftp/
ls -Z /home/ftpuser/
# 修复SELinux上下文
restorecon -R /var/ftp
restorecon -R /home/ftpuser
# 设置SELinux布尔值
setsebool -P ftpd_full_access on1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
13.4 被动模式连接问题
bash
# 检查被动模式端口范围
firewall-cmd --permanent --add-port=30000-31000/tcp
firewall-cmd --reload
# 检查vsftpd配置中的被动模式设置
grep -i pasv /etc/vsftpd/vsftpd.conf1
2
3
4
5
6
2
3
4
5
6