Linux系统如何开启FTP的21端口?

在Linux系统中,21端口是FTP(File Transfer Protocol,文件传输协议)服务的默认端口,开启21端口通常意味着需要安装并配置FTP服务,同时确保防火墙允许该端口的流量访问,本文将以主流的FTP服务器软件vsftpd(Very Secure FTP Daemon)为例,详细说明在Linux系统中开启21端口的完整步骤,包括安装服务、配置防火墙、修改参数设置及测试连接等关键环节,同时针对不同Linux发行版(如CentOS/RHEL和Ubuntu/Debian)的差异提供对应操作。

linux 如何开启21宽口

安装FTP服务软件vsftpd

vsftpd是一款轻量级、安全的FTP服务程序,广泛应用于Linux系统,是开启21端口的基础,不同Linux发行版的包管理器不同,安装命令略有差异。

CentOS/RHEL系统

使用yumdnf包管理器安装(CentOS 7及以下版本使用yum,CentOS 8及以上版本使用dnf):

# 更新软件包缓存
sudo yum update -y  # CentOS 7及以下
sudo dnf update -y  # CentOS 8及以上
# 安装vsftpd
sudo yum install vsftpd -y  # CentOS 7及以下
sudo dnf install vsftpd -y  # CentOS 8及以上

Ubuntu/Debian系统

使用apt包管理器安装:

# 更新软件包列表
sudo apt update
# 安装vsftpd
sudo apt install vsftpd -y

安装完成后,可通过以下命令检查vsftpd服务状态:

sudo systemctl status vsftpd

若显示“active (running)”,则表示服务已启动;若未启动,可使用sudo systemctl start vsftpd手动启动。

配置防火墙开放21端口

Linux系统默认启用防火墙(如CentOS 7+的firewalld、Ubuntu的ufw),需手动开放21端口及FTP被动模式所需的端口范围(避免主动/被动模式连接问题)。

CentOS/RHEL(firewalld)

# 开放21端口(TCP协议)
sudo firewall-cmd --permanent --add-port=21/tcp
# 开放FTP被动模式端口范围(示例:50000-50100,可根据需求修改)
sudo firewall-cmd --permanent --add-port=50000-50100/tcp
# 重新加载防火墙配置使规则生效
sudo firewall-cmd --reload
# 查查已开放的端口确认
sudo firewall-cmd --list-ports

Ubuntu/Debian(ufw)

# 开放21端口
sudo ufw allow 21/tcp
# 开放FTP被动模式端口范围(示例:50000-50100)
sudo ufw allow 50000:50100/tcp
# 启用ufw(若未启用)
sudo ufw enable
# 查看防火墙规则
sudo ufw status

注意:FTP协议的主动模式(Active Mode)和被动模式(Passive Mode)对端口需求不同,主动模式需客户端连接服务器的21端口(命令端口)和20端口(数据端口),但现代防火墙通常限制主动模式;被动模式下,服务器动态分配数据端口(如上述50000-50100),客户端主动连接这些端口,更适合NAT环境,因此建议开启被动模式并配置端口范围。

linux 如何开启21宽口

修改vsftpd配置文件

vsftpd的核心配置文件为/etc/vsftpd/vsftpd.conf,需根据需求修改关键参数,确保21端口可正常访问且符合安全策略。

备份原始配置文件

sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak

编辑配置文件

使用vinano编辑器打开文件:

sudo vi /etc/vsftpd/vsftpd.conf

关键参数说明及修改建议

以下为vsftpd.conf中与21端口开启及功能相关的核心参数,可根据需求调整:

参数名 默认值 说明 建议值
listen YES 是否监听IPv4端口 保持YES(若需IPv6支持,添加listen_ipv6=YES
anonymous_enable YES 是否允许匿名用户登录 NO(禁止匿名,提升安全性)
local_enable YES 是否允许本地用户登录 YES(允许系统用户通过FTP访问)
write_enable YES 是否允许文件写入(上传/删除等) 根据需求设置(如仅上传则保持YES)
chroot_local_user NO 是否限制本地用户仅能访问家目录 YES(防止用户越权访问系统目录)
allow_writeable_chroot NO 是否允许chroot目录可写(需配合chroot_local_user=YES YES(若用户需上传文件)
pasv_enable NO 是否开启被动模式 YES(推荐开启,解决防火墙兼容问题)
pasv_min_port 0 被动模式最小端口 50000(与防火墙开放的端口范围一致)
pasv_max_port 0 被动模式最大端口 50100(与防火墙开放的端口范围一致)
userlist_enable YES 是否启用用户列表文件 YES(结合userlist_file限制登录用户)
tcp_wrappers YES 是否使用TCP Wrappers主机访问控制 YES(可限制特定IP访问)

示例配置片段

# 监听IPv4端口
listen=YES
# 禁止匿名登录
anonymous_enable=NO
# 允许本地用户登录
local_enable=YES
# 允许文件写入
write_enable=YES
# 限制用户仅访问家目录
chroot_local_user=YES
allow_writeable_chroot=YES
# 开启被动模式并设置端口范围
pasv_enable=YES
pasv_min_port=50000
pasv_max_port=50100
# 启用用户列表(仅允许列表中的用户登录,需创建/etc/vsftpd/user_list文件)
userlist_enable=YES
userlist_file=/etc/vsftpd/user_list
userlist_deny=NO(NO表示仅允许列表中的用户,YES表示禁止列表中的用户)

创建用户列表文件(若启用用户列表限制)

# 编辑用户列表,每行一个用户名(如允许用户ftpuser登录)
sudo vi /etc/vsftpd/user_listftpuser

重启vsftpd服务使配置生效

sudo systemctl restart vsftpd

创建FTP用户并配置权限

为提升安全性,建议创建专用FTP用户,而非直接使用系统root用户。

创建用户并设置密码

# 创建用户ftpuser,家目录为/home/ftpuser(可根据需求修改)
sudo useradd -m -d /home/ftpuser -s /sbin/nologin ftpuser
# 设置用户密码
sudo passwd ftpuser

参数说明:-m表示创建家目录;-d指定家目录;-s /sbin/nologin限制用户仅能通过FTP登录,无法直接SSH登录系统。

设置家目录权限

确保FTP用户对家目录有读写权限:

sudo chmod 755 /home/ftpuser  # 所有者可读写执行,组用户和其他用户可读执行
sudo chown ftpuser:ftpuser /home/ftpuser  # 设置所有者为ftpuser用户

处理SELinux(仅CentOS/RHEL系统)

CentOS系统默认启用SELinux,可能会阻止FTP服务访问文件系统,需配置SELinux规则。

linux 如何开启21宽口

检查SELinux状态

sestatus

若显示“enabled”,则需执行以下操作。

设置SELinux允许FTP访问

# 设置布尔值,允许FTP用户访问家目录
sudo setsebool -P ftpd_full_access on
# 或使用更严格的规则(推荐)
sudo setsebool -P ftp_home_dir on
sudo setsebool -P allow_ftpd_full_access on

检查vsftpd进程的SELinux上下文

ps auxZ | grep vsftpd

确保上下文为system_u:system_r:ftpd_t:s0,若不符,可通过restorecon -R /home/ftpuser修复。

测试FTP连接

命令行测试(Linux/macOS)

ftp localhost
# 或指定IP:ftp 192.168.1.100

输入用户名(ftpuser)和密码,若成功登录,显示“ftp>”提示符,可通过put(上传)、get(下载)等命令测试文件传输。

图形化工具测试(Windows/Linux/macOS)

使用FileZilla、WinSCP等FTP客户端,输入服务器IP、用户名、密码及端口(21),连接后测试文件上传下载功能。

常见问题排查

  • 连接被拒绝:检查vsftpd服务状态(systemctl status vsftpd)、防火墙规则(firewall-cmd --list-portsufw status)、SELinux设置(sealert -l /var/log/audit/audit.log查看日志)。
  • 无法上传文件:检查write_enable=YESallow_writeable_chroot=YES、目录权限(chmod 755)及SELinux布尔值(ftpd_full_access)。
  • 被动模式连接失败:确认防火墙开放了pasv_min_portpasv_max_port指定的端口范围,并在客户端启用被动模式(FileZilla默认开启)。

相关问答FAQs

Q1:为什么开启了21端口并配置了vsftpd,但FTP客户端仍提示“连接被拒绝”?
A:可能原因包括:

  1. vsftpd服务未启动:执行sudo systemctl start vsftpd并设置开机自启(sudo systemctl enable vsftpd);
  2. 防火墙未开放21端口:检查firewall-cmd --list-ports(CentOS)或ufw status(Ubuntu),确认21端口及被动模式端口范围已添加;
  3. SELinux阻止:CentOS系统下执行sudo setsebool -P ftpd_full_access on,或查看/var/log/audit/audit.log定位SELinux告警;
  4. 客户端网络问题:确认客户端可ping通服务器IP,且本地防火墙未阻止访问。

Q2:如何限制FTP用户仅能访问指定目录(如/var/ftp/share),而不能访问其他系统目录?
A:可通过以下步骤实现:

  1. 创建共享目录并设置权限:
    sudo mkdir -p /var/ftp/share
    sudo chmod 755 /var/ftp/share
    sudo chown ftpuser:ftpuser /var/ftp/share  # 设置FTP用户为所有者
  2. 修改vsftpd配置文件,禁用用户家目录限制,并设置本地用户根目录:
    sudo vi /etc/vsftpd/vsftpd.conf
    # 修改或添加以下参数:
    chroot_local_user=YES
    allow_writeable_chroot=YES
    local_root=/var/ftp/share  # 指定所有本地用户的FTP根目录
  3. 重启vsftpd服务:sudo systemctl restart vsftpd
    用户登录后将仅能访问/var/ftp/share目录及其子目录,无法跳出该目录范围。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/35675.html

(0)
酷番叔酷番叔
上一篇 2025年10月4日 10:36
下一篇 2025年10月4日 11:05

相关推荐

  • Linux如何正确关闭进程?

    通过进程ID(PID)关闭进程查找目标进程的PID使用 ps 命令配合 grep 搜索:ps aux | grep "进程名"示例:关闭Firefox浏览器ps aux | grep firefox输出结果第二列为PID(如 12345),使用 pgrep 快速获取PID:pgrep fir……

    2025年7月5日
    4900
  • Oracle数据库卡顿如何优化?

    *命令行登录:使用 SQLPlus***SQLPlus** 是Oracle官方命令行工具,适合服务器环境或远程连接,步骤 1:配置环境变量# 加载Oracle环境变量(根据实际安装路径调整)source /u01/app/oracle/product/19.0.0/dbhome_1/bin/oracle_env……

    2025年7月21日
    3600
  • 如何远程访问Linux?常用工具、方法及操作步骤全解析

    远程访问Linux系统是日常运维、开发和管理的核心需求,无论是管理服务器、远程开发还是调试系统,掌握多种远程访问方法都至关重要,本文将详细介绍主流的远程访问技术,包括原理、配置步骤及优缺点,并总结安全注意事项,帮助用户根据场景选择合适的方式,SSH:安全高效的命令行远程访问SSH(Secure Shell)是L……

    2025年9月8日
    2500
  • Linux中如何快速回到终端命令行界面?

    在Linux系统中,终端命令行是用户与系统直接交互的核心方式,无论是系统管理、软件开发还是日常操作,熟练掌握“回到终端命令行”的方法都非常重要,根据不同的使用场景和当前系统状态,“回到终端”的具体操作也有所差异,下面将详细说明各种常见情况下的操作方法,从图形桌面环境切换到纯文本终端(TTY)当你在Linux图形……

    2025年10月4日
    1100
  • 如何安装dms linux?具体操作步骤是什么?

    安装DMS Linux(以企业级文档管理系统为例,基于Ubuntu Server 20.04 LTS环境)需遵循规范的流程,确保系统稳定运行,以下是详细步骤:安装前准备工作硬件与系统要求组件最低配置推荐配置说明CPU2核心4核心及以上支持x86_64架构,ARM架构需额外适配内存4GB RAM8GB RAM若存……

    2025年9月20日
    2000

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信