新闻资讯

如何在Linux搭建FTP服务器?结合花生壳内网穿透实现远程访问

2026-08-11

在日常运维或项目开发中,linux搭建ftp服务器是一项基础且实用的技能。FTP(文件传输协议)能让用户在不同设备之间高效传输文件,而Linux系统凭借其稳定性和灵活性,成为搭建FTP服务器的理想平台。但很多场景下,内网服务器缺乏公网IP,导致外网无法直接访问。本文将手把手教你完成linux搭建ftp服务器的全流程,并借助贝锐花生壳的内网穿透服务,让服务器轻松暴露于公网,实现随时随地远程文件管理。

一、环境准备与软件安装

1. 检查系统环境

建议使用 CentOS 7/8 或 Ubuntu 20.04 及以上版本,内核需支持常见的FTP协议。以下以CentOS 7为例。

2. 安装vsftpd

vsftpd(Very Secure FTP Daemon)是Linux下最主流的FTP服务器软件,轻量且安全。执行命令:


yum install -y vsftpd

Ubuntu下使用 apt install vsftpd

3. 启动并设置开机自启


systemctl start vsftpd

systemctl enable vsftpd

二、配置vsftpd服务

1. 备份默认配置


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

2. 编辑配置文件

关键参数设置如下:


anonymous_enable=NO          # 禁止匿名访问

local_enable=YES             # 允许本地用户登录

write_enable=YES             # 允许写入

local_umask=022              # 上传文件权限掩码

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

chroot_local_user=YES        # 限制用户在主目录

allow_writeable_chroot=YES   # 允许可写chroot(安全需注意)

listen=YES

listen_port=21

![图片2](https://public-cdn.orayimg.com/help/583c73b1a5e1434bd18e3b72676bdcda)

pasv_min_port=30000          # 被动模式端口范围

pasv_max_port=31000

注意:若开启chroot且需写入权限,需添加 allow_writeable_chroot=YES,否则用户无法上传文件。

3. 创建FTP用户

为安全考虑,创建专用系统用户:


useradd -d /var/ftp/share -s /sbin/nologin ftpuser

passwd ftpuser

设置目录权限:


chmod 755 /var/ftp/share

4. 防火墙与SELinux配置

开放21端口及被动端口范围:


firewall-cmd --permanent --add-port=21/tcp

firewall-cmd --permanent --add-port=30000-31000/tcp

firewall-cmd --reload

若SELinux开启,需执行:


setsebool -P ftpd_full_access on

三、测试本地FTP服务

内网另一台机器使用FTP客户端(如FileZilla)连接Linux服务器的内网IP,输入用户名密码,若能成功列出目录并上传文件,则linux搭建ftp服务器的本地部分完成。

四、使用花生壳实现外网访问

此时FTP只能在内网使用。如果没有公网IP,可以通过贝锐花生壳的内网穿透功能,将FTP服务映射到外网。

1. 注册并下载花生壳客户端

前往贝锐官网注册账号,获取免费域名。在Linux服务器上安装花生壳客户端(支持CentOS/Ubuntu),例如下载phddns并编译安装(详见花生壳官方文档),或直接使用官方提供的二进制包。

2. 启动花生壳并登录


./phddns -c /etc/phlinux.conf

图片1

输入贝锐账号密码,客户端将自动创建隧道。

3. 添加映射

登录花生壳管理平台,选择“内网穿透”>“添加映射”。填写:

应用名称:FTPServer

映射协议:TCP

外网域名:选择你的壳域名

外网端口:动态端口(或购买固定端口)

内网主机:127.0.0.1(或实际内网IP)

内网端口:21

4. 防火墙放行花生壳

确保服务器能访问花生壳服务器(一般无需额外配置),如果遇到连接问题,检查安全组或防火墙。

五、外网连接验证

在外网电脑的FTP客户端中,输入花生壳生成的域名和端口,以及之前创建的Linux用户密码,即可成功连接并传输文件。至此,linux搭建ftp服务器结合花生壳内网穿透的完整方案已实现。

注意:被动模式需在客户端设置为被动模式,并确保花生壳映射了被动端口范围(如之前pasv_min_port/pasv_max_port对应的端口也需要单独映射)。具体做法是在花生壳中再添加一条映射,内网端口填写30000-31000中的一个(如30001),外网端口保持一致,并在vsftpd配置中指定被动端口为固定值,例如:


pasv_enable=YES

pasv_address=你的花生壳域名或公网IP(使用花生壳时此参数可不填)

pasv_min_port=30001

pasv_max_port=30001

然后重启vsftpd,并在花生壳中映射该端口(TCP类型),确保外网客户端连接时能获取正确的数据通道地址。

六、安全加固建议

使用强密码并定期更换。

仅允许特定用户登录,避免开启匿名。

对vsftpd配置max_clientsmax_per_ip限制并发连接。

定期审计日志文件 /var/log/xferlog

配合花生壳的访问控制功能,可设置IP白名单或访问密码,进一步提升安全性。

FAQ

Q:FTP客户端连接时提示“530 Permission denied”如何处理?

A:检查用户是否拥有目录写入权限,以及SELinux是否放行。可临时关闭SELinux测试:setenforce 0,若正常则按上文配置正确策略。

Q:外网连接时出现“无法打开数据连接”错误?

A:通常是被动模式端口未映射或防火墙未放行。确保花生壳映射了被动端口(与vsftpd配置的pasv端口一致),并在客户端设置为被动模式。

Q:花生壳免费域名是否支持固定端口?

A:免费用户使用动态端口,重启或更换网络后外网端口可能变化。如需固定端口,可购买花生壳的专业服务或带宽增配。

Q:Linux搭建FTP服务器后,能否同时使用主动模式?

A:可以,但主动模式需要服务器能向客户端发起连接,这在NAT环境下通常不可行。建议统一使用被动模式并正确配置端口映射

新闻资讯
热门专题
最新专题
友情链接