在Linux终端里执行ftp 目标服务器IP就能连接另一台FTP服务器,登录后用put上传、get下载文件;如果文件量大、需要断点续传或自动化脚本,直接换lftp会更省事。
通过linux ftp命令连接服务器前,先做好网络与软件准备
很多人第一次在Linux上连FTP,不是命令不会敲,而是卡在客户端没装、端口没放行、模式选错这三件事上,先花两分钟排查,后面操作会顺畅很多。
确认本机是否装了ftp客户端
最小化安装的CentOS、Ubuntu、Debian通常不会自带ftp命令,你可以先执行:
which ftp查看命令是否存在rpm -qa | grep ftp或dpkg -l | grep ftp查看是否装过相关包
如果提示找不到命令,按发行版安装:
# CentOS / RHEL yum install ftp -y # Ubuntu / Debian apt update && apt install ftp -y
装完后再执行ftp,终端会进入ftp>交互提示符,说明客户端可用了。
centos ftp连接另一台服务器最容易被防火墙挡住
CentOS 7及之后的版本默认开启firewalld,21端口通常不在白名单里,服务器上即使vsftpd已经运行,外部Linux客户端也连不上。
放行命令如下:
# 放行FTP服务 firewall-cmd --add-service=ftp --permanent firewall-cmd --reload # 如果只想放行21端口 firewall-cmd --add-port=21/tcp --permanent firewall-cmd --reload
如果你用的是简米云、酷番云等云服务器,除了系统防火墙,还要在安全组里放行21端口,以及接下来要说的被动模式端口段,这一步漏掉,客户端会一直卡在“正在连接”或提示connection timed out。
主动模式与被动模式先选对
FTP的数据传输分主动模式和被动模式,主动模式下服务器会主动连客户端的随机端口,在NAT网络、云主机、公司内网里经常被客户端防火墙拦住,被动模式则是客户端主动连服务器的数据端口,兼容性更好。
登录FTP后建议先执行:
passive
开启被动模式,如果没有这一步,很多云服务器上的FTP会出现“能登录但ls卡住”的情况。
掌握linux连接ftp服务器命令:登录、上传、下载实测
这一节直接上操作路径,按顺序执行即可完成一次典型的文件传输。
登录命令与基础目录操作
ftp 192.168.1.100
根据提示输入用户名和密码,登录成功后出现ftp>提示符。
常用目录与文件查看命令:
ls列出远程目录内容cd /var/www/html切换远程目录lcd /home/user/backup切换本地目录pwd显示远程当前路径lpwd显示本地当前路径binary切换为二进制传输模式,上传压缩包、图片、程序文件前一定要执行ascii切换为文本传输模式,仅适合纯文本文件
ftp上传文件到服务器命令实测:put、mput与断点续传
单文件上传最直接:
put index.html
如果需要上传后重命名:
put /home/user/index.html /var/www/html/index_new.html
批量上传多个文件:
mput .jpg
默认情况下mput每传一个文件都会询问确认,可以先执行prompt off关闭交互,再执行批量操作。
标准ftp命令的上传断点续传支持很弱,多数版本只能通过reget实现下载续传,上传大文件断掉后需要重新传,这是ftp命令行客户端的一个明显短板,如果经常传大文件,建议直接跳到下一节的lftp对比。
下载、删除、批量操作的常用命令
get remote.txt下载单个文件mget .txt批量下载reget remote.txt断点续传下载delete remote.txt删除远程文件mdelete .txt批量删除quit或bye退出FTP会话
执行批量下载前同样建议先prompt off,否则每个文件都会问一次。
linux ftp客户端哪个好用:ftp命令、lftp、sftp逐项对比
如果只是临时传一两个小文件,ftp命令够用,但一旦涉及大文件、目录递归、脚本自动化、加密传输,lftp和sftp的优势就很明显。
| 对比维度 | ftp命令 | lftp | sftp |
|---|---|---|---|
| 是否默认安装 | 多数需手动安装 | 需手动安装 | 多数Linux自带 |
| 支持协议 | FTP | FTP、FTPS、HTTP、SFTP等 | SFTP(基于SSH) |
| 上传断点续传 | 基本不支持 | 支持reput |
支持 |
| 递归上传下载 | 不支持 | 支持mirror |
需配合scp -r或rsync |
| 安全性 | 明文传输 | 可配置TLS加密 | SSH加密 |
| 自动化脚本 | 弱 | 强,支持-e参数 |
强,支持批处理 |
安装lftp:
# CentOS yum install lftp -y # Ubuntu apt install lftp -y
lftp递归上传整个目录到服务器:
lftp -u username,password 192.168.1.100 -e "mirror -R /local/dir /remote/dir; quit"
lftp上传断点续传:
lftp -u username,password 192.168.1.100 -e "reput localfile -o remotefile; quit"
行业共识认为,生产环境跨公网传输应当优先使用SFTP或FTPS,而不是明文FTP,因为账号密码和数据内容在FTP协议下都是可见的。
排错:连不上、超时、中文乱码的具体处理
在实际运维场景中,FTP问题多数不是命令写错,而是网络链路和模式配置。
连不上先看网络与端口
客户端先做端口连通性测试:
telnet 目标IP 21
或者:
nc -vz 目标IP 21
如果连不上,按顺序检查:
- 服务器vsftpd是否启动:
systemctl status vsftpd - 服务器是否监听21端口:
ss -tlnp | grep 21 - 系统防火墙和安全组是否放行21端口
- 客户端到服务器之间是否存在路由器ACL限制
超时多数是被动模式端口范围没放行
能登录但ls或put超时,基本可以锁定被动模式数据端口的问题,服务器端需要在vsftpd配置中明确端口范围:
pasv_enable=YES pasv_min_port=30000 pasv_max_port=31000
然后在防火墙中放行这段范围:
firewall-cmd --add-port=30000-31000/tcp --permanent firewall-cmd --reload
云服务器安全组也要同步放行同样的端口段,业内专家指出,FTP连接超时多数情况下与被动模式端口范围未放行有关,先把这一段配好能解决相当一部分问题。
中文乱码与二进制传输模式
上传压缩包后损坏、图片打不开,多半是忘了执行binary,文本模式下FTP会转换换行符,对二进制文件是致命的。
中文文件名乱码通常是服务器端字符集与客户端不一致,FTP协议本身不负责字符集转换,临时解决办法是在上传前把文件名改成英文,或者使用支持UTF-8的现代客户端如lftp、FileZilla。
选对工具比硬记命令更重要
Linux下FTP到另一台服务器并不复杂,核心路径就是:装好客户端、放行21和被动端口、登录后切被动模式、按需put上传get下载,临时传文件用ftp命令足够,但频繁传输或跨公网操作时,lftp和sftp能少踩很多坑。
相关问答
linux怎么ftp到另一台服务器?
先确认本机安装ftp客户端,然后执行ftp 目标IP,输入用户名和密码登录,登录后在ftp>提示符下执行passive切换被动模式,使用put 文件名上传、get 文件名下载,如果系统未安装ftp命令,CentOS用yum install ftp -y,Ubuntu用apt install ftp -y即可。
linux ftp命令连接服务器提示connection refused怎么处理?
connection refused说明目标主机的21端口没有监听或者防火墙主动拒绝了连接,先到服务器上执行ss -tlnp | grep 21确认vsftpd是否启动并监听,再执行firewall-cmd --add-service=ftp --permanent && firewall-cmd --reload放行FTP服务,最后在云安全组中放行21端口,处理完后客户端用telnet 目标IP 21测试,出现220开头的欢迎信息即表示端口已通。
ftp上传文件到服务器命令和sftp命令有什么区别?
两者都用put上传、get下载,但底层协议完全不同,FTP走21端口,账号密码和数据均为明文传输,且需要单独处理被动模式端口范围;SFTP基于SSH走22端口,传输全程加密,不需要额外放行数据端口,同一内网快速传文件用FTP足够,跨公网或涉及敏感数据时SFTP是更安全的选择。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/671705.html





