在Linux系统中连接FTP服务器是日常运维和文件传输中的常见操作,FTP(File Transfer Protocol)作为一种经典的文件传输协议,虽然安全性不如SFTP或FTPS,但在某些内网环境或兼容性场景下仍被广泛使用,本文将详细介绍在Linux环境下连接FTP服务器的多种方法、常用命令、配置技巧及注意事项,帮助用户高效完成文件传输任务。

准备工作:确认FTP服务器信息
在连接FTP服务器前,需确保以下信息准备就绪:
- 服务器地址:FTP服务器的IP地址或域名(如
ftp.example.com)。 - 端口:默认FTP端口为21,若服务器配置了非标准端口(如2121),需明确标注。
- 用户名和密码:若服务器需要身份验证,需提供有效的用户名和密码;若为匿名服务器,用户名通常为
anonymous,密码可为空或任意邮箱地址。 - 网络连通性:通过
ping或telnet命令测试本地与FTP服务器的网络是否可达,例如telnet ftp.example.com 21,若返回Connected则表示网络正常。
使用命令行工具连接FTP服务器
Linux系统默认安装了ftp命令行工具,以下是详细操作步骤:
基本连接命令
打开终端,输入以下命令连接FTP服务器:
ftp ftp.example.com
若需指定端口,添加-p参数:

ftp -p 2121 ftp.example.com
连接成功后,根据提示输入用户名和密码,若为匿名登录,可直接输入:
ftp> anonymous ftp> your_email@example.com # 密码部分可输入任意邮箱或留空
常用FTP交互命令
连接成功后,可通过以下命令进行文件操作:
| 命令 | 功能描述 | 示例 |
|---|---|---|
ls |
列出当前目录文件 | ftp> ls |
dir |
列出文件详细信息(类似ls -l) |
ftp> dir |
cd <目录> |
切换远程服务器目录 | ftp> cd /pub |
lcd <路径> |
切换本地工作目录 | ftp> lcd /home/user/download |
get <文件> |
下载远程文件到本地 | ftp> get file.txt |
put <文件> |
上传本地文件到远程服务器 | ftp> put local_file.txt |
mget <文件> |
批量下载多个文件(支持通配符) | ftp> mget *.zip |
mput <文件> |
批量上传多个文件 | ftp> mput *.log |
delete <文件> |
删除远程文件 | ftp> delete temp.txt |
mkdir <目录> |
创建远程目录 | ftp> mkdir new_folder |
! <命令> |
执行本地系统命令 | ftp> ! ls /home |
bye或quit |
退出FTP会话 | ftp> bye |
被动模式与主动模式切换
FTP分为主动模式(PORT)和被动模式(PASV),若遇到连接问题,可通过以下命令切换:
- 被动模式(推荐,适用于内网穿透):
ftp> passive - 主动模式:
ftp> passive off
二进制模式传输
传输二进制文件(如图片、压缩包)时,需确保使用二进制模式,避免文件损坏:

ftp> binary
使用图形化工具连接FTP服务器
对于不习惯命令行的用户,可安装图形化FTP客户端,如FileZilla(跨平台)或Linux自带的Nautilus(GNOME文件管理器)。
通过Nautilus连接
- 打开文件管理器,在地址栏输入:
ftp://用户名:密码@ftp.example.com - 若需指定端口,格式为:
ftp://用户名:密码@ftp.example.com:2121 - 输入信息后按回车,即可在图形界面中浏览和传输文件。
安装FileZilla
若系统未安装FileZilla,可通过以下命令安装:
# Ubuntu/Debian sudo apt update && sudo apt install filezilla # CentOS/RHEL sudo yum install filezilla
启动FileZilla后,在主机、用户名、密码、端口栏填写对应信息,点击“连接”即可操作。
高级配置与脚本化操作
使用.netrc文件自动登录
为避免每次输入密码,可在用户主目录创建.netrc文件(权限需设置为600):
touch ~/.netrc chmod 600 ~/.netrc
machine ftp.example.com
login your_username
password your_password
之后执行ftp ftp.example.com可直接登录,无需输入密码。
编写Shell脚本自动化传输
通过脚本可实现批量文件传输,例如以下脚本用于上传文件:
#!/bin/bash HOST="ftp.example.com" USER="your_username" PASS="your_password" LOCAL_DIR="/path/to/local/files" REMOTE_DIR="/remote/directory" ftp -n $HOST <<EOF user $USER $PASS binary cd $REMOTE_DIR lcd $LOCAL_DIR mput * bye EOF
将脚本保存为ftp_upload.sh,赋予执行权限后运行:chmod +x ftp_upload.sh && ./ftp_upload.sh。
注意事项与常见问题
- 安全性问题:FTP协议以明文传输密码和数据,建议在公网环境中使用SFTP(基于SSH)或FTPS(基于SSL/TLS)替代。
- 防火墙与SELinux:若连接失败,检查本地防火墙(如
ufw)或服务器端防火墙是否开放FTP端口;Linux系统需确保SELinux未阻止FTP服务。 - 权限问题:确保登录用户对远程目录有读写权限,否则上传或下载操作会失败。
- 超时设置:若长时间无操作会断开连接,可通过
ftp> idle 300设置超时时间(单位:秒)。
相关问答FAQs
问题1:连接FTP服务器时提示“530 Login incorrect”如何解决?
解答:此错误通常由用户名或密码错误导致,需确认以下几点:
- 检查用户名和密码是否正确,区分大小写;
- 若为匿名服务器,确认是否允许匿名登录(部分服务器需配置
ftpusers文件); - 尝试使用
telnet命令测试端口是否开放:telnet ftp.example.com 21,若无响应可能是服务器未启动FTP服务或防火墙拦截。
问题2:上传大文件时出现“425 Failed to establish connection”错误怎么办?
解答:该错误通常与被动模式(PASV)配置有关,解决方法如下:
- 在FTP客户端执行
passive命令切换为被动模式; - 检查本地防火墙是否允许被动模式的随机端口范围(默认为1024-65535),可通过
ftp> passive后查看服务器返回的端口信息; - 若为内网环境,确保FTP服务器的被动模式端口范围已在防火墙中开放,或联系管理员调整FTP服务器配置。
