Linux本地主机连FTP服务器,一条命令的事
本地Linux主机向云服务器传文件,用FTP工具配合lftp命令行,直接在终端里就能完成上传,核心命令是lftp -u 用户名,密码 服务器IP加put或mirror操作。整个过程不需要额外装图形界面,在SSH终端里敲几条命令就能把文件传上去,本文把这套流程完整拆解给你。
linux 怎么用 ftp 命令上传文件到云服务器?先装客户端
大多数Linux发行版默认没装FTP客户端,不少新手上来就敲ftp,结果提示command not found,先确认系统装了哪个客户端,通常用lftp,因为它的断点续传和并发上传能力比传统ftp命令强得多。
安装命令分系:CentOS和Ubuntu不一样
Debian/Ubuntu系列执行:
sudo apt updatesudo apt install lftp -y
Red Hat/CentOS系列执行:
sudo yum install lftp -y
装完以后在终端里敲lftp --version,能看到版本号就说明客户端装好了,此时有个细节:云服务器的安全组规则必须放行21端口,否则后面连接会卡在登录阶段,这个排查步骤经常被本地测试的同事漏掉,就算在本地虚拟机里能连上,一旦连云服务器就报”Connection refused”,基本就是安全组没开。
交互式连接命令:拿到控制台再说话
直接用lftp登录,命令格式为:
lftp -u ftpuser 123.456.789.10
回车以后进入lftp:~>提示符,这个交互界面支持ls、cd、get、put等常用命令,测试连接时先敲ls,能列出远程目录就说明身份认证通过了,需要上传单个文件:
put /home/user/app.zip(上传到当前远程目录)put /home/user/app.zip -o /www/wwwroot/(指定远程存放路径)
行业共识:lftp的断点续传能力在传输大文件时表现稳定,中断重连后损失的时间几乎可以忽略。
本地linux主机远程上传文件,ftp 还是 sftp 怎么选?两者场景差异明显
这个问题我遇到很多运维新同事问过:明明有scp和sftp,为什么还要用FTP?直接说结论:两者各有适用场景,没有绝对优劣。
协议对比速览:端口、加密、速度
| 对比项 | FTP | SFTP |
|---|---|---|
| 默认端口 | 21(数据端口20) | 22 |
| 传输加密 | 明文(FTP) / TLS加密(FTPS) | SSH加密 |
| 断点续传 | 支持(lftp配合) | 支持(部分客户端) |
| 常用场景 | 网站文件批量维护 | 敏感数据传递 |
| 客户端兼容性 | 所有环境均有 | 依赖SSH组件 |
SFTP走22端口,和SSH共用一个通道,这意味着只要你能SSH登录云服务器,就能直接传文件,不用额外开端口,对于安全要求高的业务,SFTP天然带有加密层。
但FTP在批量上传上有自己的硬优势:lftp的mirror命令能镜像整个目录树,配合--parallel参数并发上传多个文件,速度往往比SFTP快不少,业内专家指出,FTP在传输大量小文件时效率更高,适合静态网站部署、CDN资源推送这类场景。
日常维护选哪个?看你的业务形态
- 网站代码更新频繁,需要单独管理ftp用户权限,用FTP
- 传数据库备份文件、密钥文件,用SFTP更稳妥
- 不确定自己该用哪个,优先选SFTP,因为服务器只要开了SSH就能连接,省去额外安装vsftpd的步骤
ftp上传很慢或者一直连接失败?这几个排查步骤能解决九成问题
命令没写错、账号密码正确、安全组也放行了,但还是连不上或速度极慢,下面按优先级排查。
被动模式:默认开启的关键开关
FTP有两种连接模式:主动模式(PORT)和被动模式(PASV),云服务器环境几乎都必须用被动模式,因为主动模式需要服务器主动去连你本地随机端口,这在NAT环境下基本不可行。
在lftp交互界面里输入:
set ftp:passive-mode yes
set net:timeout 10
set net:max-retries 2
把这三行配置写入~/.lftprc(没有就新建),以后每次启动lftp自动生效。
防火墙和SELinux:被低估的最大干扰源
很多云服务器安全组放行了端口,但系统防火墙还拦着,检查:
sudo systemctl status firewalldsudo iptables -L -n查看规则
如果SELinux启用(CentOS默认),还需要:
查看相关布尔值getsebool -a | grep ftp
- 执行
setsebool -P ftpd_full_access 1允许FTP完全访问
这两步做完,常见的”能登录但ls卡死”问题基本能消除,实际情况中,SELinux导致的数据连接超时问题和安全组放行错误几乎各占一半。
上传文件没你想的简单?用脚本让这个流程自动化
掌握了基础连接后,把命令串成脚本,能省掉大量重复操作,这里给出一个简易同步脚本,适合网站代码发布场景。
完整备份+上传脚本
在本地Linux主机新建backup_upload.sh,写入:
#!/bin/bash BACKUP_DIR="/home/user/project" REMOTE_DIR="/www/wwwroot" LFTPrc="set ftp:passive-mode yes" lftp -u ftpuser,mypassword 123.456.789.10 -e " $LFTPrc mirror -R --parallel=5 $BACKUP_DIR $REMOTE_DIR bye " chmod +x backup_upload.sh
先备份远程旧版本再用映射参数覆盖:
mirror -R表示反向镜像(本地上传到远程),如果本地路径文件删除不会同步删除远程旧文件,避免误删--parallel=5设置5个并发连接数,传输50MB以上的目录(如框架代码、主题包)时能明显提速
这个脚本在本地Linux主机的计划任务里加上就行。执行前务必在测试目录跑一遍,脚本里没有删除逻辑时相对安全,只要路径写错顶多传错目录,不会丢数据。
使用场景区分
- 每天定时备份服务器配置:直接在cron里写脚本跑
- 临时传单文件:直接用
lftp交互界面 - 需要传10GB以上的大文件(如系统镜像):结合
screen后台执行,或使用rsync配合rclone,但FTP场景基本止步于几个GB的量级
FTP用户权限到底怎么控制?只给该给的目录
默认vsftpd配置下,FTP用户可以浏览服务器上所有他有权限读的文件,为了安全,需要给FTP用户做目录隔离。
用vsftpd配置锁定用户目录
本地Linux主机上执行sudo apt install vsftpd后,编辑/etc/vsftpd.conf:
- 启用
chroot_local_user=YES,把ftp用户锁定在自己的home目录,看不到其他路径 - 设置
local_enable=YES允许本地用户登录 - 顺手加一行
allow_writeable_chroot=YES,不锁写权限
修改完重启服务
sudo systemctl restart vsftpd,这样登录进去后ls /看到的就是home目录的根,彻底隔离了服务器其他文件。
上传文件的归属权限问题
经常出现传到服务器上的文件nginx无法读取,原因是FTP用户和Web服务用户不同属,解决方案有两种:
- 把FTP用户加入Web用户组:
usermod -aG www-data ftpuser - 在vsftpd.conf中添加
local_umask=022,让新文件权限为644
不处理这个问题的话,上传wordpress主题后浏览器直接白屏,检查错误日志才发现是权限不足。
说到底,FTP不是最安全的方案,但在批量维护和简单场景下,它的效率和便捷性依然难以替代,SFTP适合传敏感文件,FTP配合lftp的并发能力适合传大目录,动手配置一次vsftpd和lftp,你就能稳定获得一条本地Linux主机到云服务器的文件通道,选哪个协议,取决于现场环境里服务器怎么配置的,没有绝对正确答案。
常见问题解答
连接FTP服务器报”530 Login incorrect”怎么处理?
账号密码错误是最直接原因,查看/var/log/messages或/var/log/vsftpd.log,记录中包含用户名和来源IP,如果用户名根目录被删或home目录不存在也会报这个错误,尝试创建home目录并重新设定密码:usermod -d /home/ftpuser ftpuser,还有个隐蔽情况是PAM认证模块限制了FTP访问,检查/etc/pam.d/vsftpd里pam_listfile行是否包含允许用户。
上传了一半断线,lftp怎么续传?
lftp默认没有开启断点续传,需要手动设置:set ftp:ssl-allow false后执行put -c localfile命令,-c参数表示继续传输已存在的文件部分,如果使用mirror,则不需要额外参数,lftp会自动比较本地和远程文件大小差异,只传输缺失部分。
本地无法连接云服务器FTP端口,全网络测试都通,问题出在哪?
当你用telnet 服务器IP 21测试端口通但FTP工具连不上时,多数是vsftpd配置了白名单IP限制,检查/etc/vsftpd.user_list和/etc/vsftpd.chroot_list文件,确认你的本地IP没有被列表拒绝。云服务器控制台里的安全组出方向规则也需要放行,如果只加了入方向21端口,某些云厂商默认出方向限制严格会导致数据连接失败,出方向需要放行1024-65535端口范围。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/579895.html




