FTP(File Transfer Protocol)是一种基于TCP/IP协议的文件传输协议,用于在客户端和服务器之间进行文件上传、下载等操作,Linux系统作为服务器端或客户端,均支持通过FTP进行文件管理,本文将详细介绍Linux环境下使用FTP的客户端操作、服务器搭建及相关注意事项。
Linux命令行FTP客户端使用
Linux系统自带多种FTP命令行工具,其中ftp
是基础工具,lftp
功能更强大(支持断点续传、多线程等),以下以ftp
和lftp
为例说明操作步骤。
基础命令行工具ftp
连接FTP服务器:
ftp ftp.example.com # 替换为服务器IP或域名
输入用户名和密码后进入FTP交互界面,常用命令如下:
命令 | 功能说明 | 示例 |
---|---|---|
ls |
列出远程服务器目录 | ls |
cd |
切换远程服务器目录 | cd /home/user |
lcd |
切换本地目录 | lcd /path/to/local |
get |
下载远程文件到本地 | get remote_file.txt |
put |
上传本地文件到远程 | put local_file.txt |
mget |
批量下载远程文件 | mget *.txt |
mput |
批量上传本地文件 | mput *.txt |
执行本地系统命令 | ! ls (查看本地目录) |
|
bye |
退出FTP连接 | bye |
注意事项:
- 若服务器为被动模式(PASV),需在FTP交互界面执行
passive
开启被动模式(解决NAT环境下的连接问题)。 - 文件传输过程中可通过
hash
命令显示传输进度(表示每传输1024字节显示一个)。
增强工具lftp
lftp
支持更高级功能,如断点续传、多线程传输、镜像同步等,安装方式:
sudo apt install lftp # Ubuntu/Debian sudo yum install lftp # CentOS/RHEL
连接服务器:
lftp ftp.example.com -u username # 直接指定用户名
进入交互界面后,常用命令:
mirror
:同步目录(mirror /remote/path /local/path
,下载远程目录到本地;mirror -R /local/path /remote/path
上传本地目录到远程)。pget
:多线程下载(pget -n 5 large_file.zip
,5线程下载)。queue
:管理传输队列(queue put file1.txt
添加上传任务,queue start
执行队列)。
图形界面FTP工具使用
对于不熟悉命令行的用户,图形界面工具更直观,以FileZilla为例(跨平台,支持Linux):
安装FileZilla
sudo apt install filezilla # Ubuntu/Debian sudo yum install filezilla # CentOS/RHEL
连接与操作
- 打开FileZilla,点击“文件”→“站点管理器”,添加站点信息:服务器IP、用户名、密码、端口(默认21)。
- 点击“连接”,界面分为四部分:本地文件列表(左侧)、远程文件列表(右侧)、传输队列(下方)、日志区(底部)。
- 拖拽文件即可上传/下载,支持右键“传输队列”管理任务,勾选“断点续传”可中断后继续传输。
Linux FTP服务器搭建(以vsftpd为例)
若需搭建FTP服务器,vsftpd
(Very Secure FTP Daemon)是常用选择,轻量且安全。
安装vsftpd
sudo apt install vsftpd # Ubuntu/Debian sudo yum install vsftpd # CentOS/RHEL
配置文件修改
编辑配置文件/etc/vsftpd.conf
:
anonymous_enable=NO # 禁止匿名登录 local_enable=YES # 允许本地用户登录 write_enable=YES # 允许写入 chroot_local_user=YES # 限制用户在主目录 allow_writeable_chroot=YES # 允许被限制用户写入(需配合chroot使用) pasv_min_port=10000 # 被动模式最小端口 pasv_max_port=10100 # 被动模式最大端口
创建FTP用户并设置权限
sudo useradd -m ftpuser # 创建用户(自动创建家目录) sudo passwd ftpuser # 设置用户密码 sudo chown -R ftpuser:ftpuser /home/ftpuser # 设置用户目录权限
启动服务与防火墙配置
sudo systemctl start vsftpd sudo systemctl enable vsftpd # 开机自启 sudo ufw allow 21 # 开放FTP端口(21) sudo ufw allow 10000:10100 # 开放被动模式端口范围
安全注意事项
- 明文传输风险:FTP默认使用明文传输密码和数据,易被窃听,建议优先使用SFTP(基于SSH,加密传输)或FTPS(FTP over SSL/TLS)。
- 权限控制:限制用户主目录(
chroot
),避免用户越权访问系统文件;禁用匿名登录(anonymous_enable=NO
)。 - 防火墙与端口:仅开放必要的FTP端口(21和被动模式端口),避免暴露其他服务。
相关问答FAQs
问题1:Linux命令行FTP连接后无法上传文件,提示“550 Permission denied”,如何解决?
解答:通常由权限问题导致,可按以下步骤排查:
- 检查vsftpd配置是否允许写入(
write_enable=YES
); - 确认用户对目标目录是否有写权限(
chmod 755 /目标目录
,chown ftpuser:ftpuser /目标目录
); - 若使用chroot限制,确保用户主目录不属于root(
chown ftpuser:ftpuser /home/ftpuser
)。
问题2:FTP和SFTP有什么区别?如何选择?
解答:
- FTP:传统文件传输协议,端口21,数据传输为明文,安全性低,适合可信网络内传输非敏感文件。
- SFTP:基于SSH协议,端口22,数据加密传输,安全性高,支持文件权限管理,适合跨网络传输敏感数据。
选择建议:涉及密码、重要文件等敏感数据时,必须使用SFTP;仅在本地局域网或传输非敏感文件时,可考虑FTP(但优先推荐SFTP)。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/25897.html