🔥作者简介: 一个平凡而乐于分享的小比特,中南民族大学通信工程专业研究生,研究方向无线联邦学习 🎬擅长领域:驱动开发,嵌入式软件开发,BSP开发 ❄️作者主页:一个平凡而乐于分享的小比特的个人主页 ✨收录专栏:Linux,本专栏目的在于,记录学习Linux操作系统的总结 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖

特性 | TFTP (简单文件传输协议) | FTP (文件传输协议) |
|---|---|---|
端口 | UDP 69 | TCP 20(数据), 21(控制) |
连接类型 | 无连接 (UDP) | 面向连接 (TCP) |
认证机制 | 无认证 | 用户名/密码认证 |
传输模式 | 仅二进制 | ASCII和二进制 |
文件操作 | 仅读写 | 完整CRUD操作 |
目录列表 | 不支持 | 支持 |
典型用途 | 网络设备固件升级、PXE启动 | 网站文件上传、文件共享 |
安全性 | 非常低(无加密) | 较低(可选SSL/TLS) |
复杂度 | 非常简单 | 相对复杂 |
TFTP工作流程:
┌─────────┐ UDP 69 ┌─────────┐
│ 客户端 │ ←────────────→ │ 服务器 │
└─────────┘ 无状态连接 └─────────┘
简单请求响应模式
FTP工作流程:
┌─────────┐ 控制连接(21) ┌─────────┐ 数据连接(20) ┌─────────┐
│ 客户端 │ ←─────────→ │ 服务器 │ ←─────────→ │ 数据端口 │
└─────────┘ 命令通道 └─────────┘ 数据传输 └─────────┘
需要两个独立连接# 更新软件包列表
sudo apt update
# 安装TFTP服务器和客户端
sudo apt install tftpd-hpa tftp
# 查看安装状态
systemctl status tftpd-hpa# 编辑配置文件
sudo nano /etc/default/tftpd-hpa配置文件示例:
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpboot" # TFTP根目录
TFTP_ADDRESS="0.0.0.0:69" # 监听所有接口
TFTP_OPTIONS="--secure --create" # 安全模式,允许创建文件# 创建TFTP目录
sudo mkdir -p /var/lib/tftpboot
# 设置权限
sudo chown -R tftp:tftp /var/lib/tftpboot
sudo chmod -R 777 /var/lib/tftpboot # 开发环境,生产环境需严格限制
# 重启服务
sudo systemctl restart tftpd-hpa# 允许TFTP流量
sudo ufw allow 69/udp# 安装vsftpd
sudo apt install vsftpd
# 启动服务
sudo systemctl start vsftpd
sudo systemctl enable vsftpd# 备份原始配置
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.backup
# 编辑配置文件
sudo nano /etc/vsftpd.conf关键配置选项:
# 基本设置
listen=YES # 以独立模式运行
listen_ipv6=NO # 禁用IPv6
anonymous_enable=NO # 禁用匿名登录
local_enable=YES # 允许本地用户登录
write_enable=YES # 允许写入操作
# 安全设置
chroot_local_user=YES # 将用户限制在家目录
allow_writeable_chroot=YES # 允许在限制目录中写入
# 连接设置
local_umask=022 # 文件权限掩码
idle_session_timeout=600 # 空闲会话超时(秒)
data_connection_timeout=120 # 数据传输超时# 创建用户组
sudo groupadd ftpusers
# 创建FTP用户(无Shell访问权限)
sudo useradd -g ftpusers -d /home/ftpuser -s /bin/bash ftpuser
sudo passwd ftpuser
# 设置目录权限
sudo chown ftpuser:ftpusers /home/ftpuser
sudo chmod 755 /home/ftpuser# 允许FTP端口
sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw allow 30000:31000/tcp # 被动模式端口范围# 场景:网络管理员需要批量更新路由器固件
# 1. 将固件文件放入TFTP目录
sudo cp router-firmware.bin /var/lib/tftpboot/
# 2. 路由器配置TFTP客户端指向服务器
# (路由器CLI命令示例)
# router> copy tftp://192.168.1.100/router-firmware.bin flash:# 场景:Web开发团队需要上传网站文件
# 1. 创建虚拟用户(更安全的方式)
sudo apt install libpam-pwdfile
sudo mkdir /etc/vsftpd
# 2. 创建虚拟用户数据库
sudo htpasswd -cd /etc/vsftpd/ftpd.passwd webdev1
sudo htpasswd -d /etc/vsftpd/ftpd.passwd webdev2
# 3. 配置PAM认证
# 创建 /etc/pam.d/vsftpd.virtual
# 添加相应的PAM配置方面 | TFTP | FTP |
|---|---|---|
传输速度 | 较快(UDP无握手) | 较慢(TCP开销) |
大文件支持 | 有限(最大文件大小限制) | 支持大文件 |
断点续传 | 不支持 | 支持 |
加密传输 | 不支持 | FTP-SSL/FTPS支持 |
用户管理 | 无 | 精细的用户权限控制 |
日志记录 | 基础 | 详细日志 |
# 1. 测试TFTP连接
tftp 127.0.0.1
tftp> get testfile
tftp> quit
# 2. 查看TFTP日志
sudo tail -f /var/log/syslog | grep tftp
# 3. 检查服务状态
sudo netstat -anpu | grep :69# 1. 测试FTP连接
ftp localhost
# 输入用户名密码测试
# 2. 详细日志配置(/etc/vsftpd.conf)
debug_ssl=YES
log_ftp_protocol=YES
syslog_enable=YES
# 3. 连接测试工具
sudo apt install lftp
lftp ftp://username:password@localhost# 1. 限制访问IP(通过防火墙)
sudo ufw allow from 192.168.1.0/24 to any port 69 proto udp
# 2. 使用更安全的目录结构
/var/lib/tftpboot/
├── router-firmware/ # 只读,路由器固件
├── switch-configs/ # 读写,配置备份
└── logs/ # 只写,设备日志
# 3. 定期清理旧文件
sudo find /var/lib/tftpboot -type f -mtime +30 -delete# 1. 启用SSL/TLS加密
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/private/vsftpd.key \
-out /etc/ssl/certs/vsftpd.crt
# 2. 在配置文件中启用SSL
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES#!/bin/bash
# tftp-setup.sh
echo "正在安装TFTP服务..."
sudo apt update
sudo apt install -y tftpd-hpa
sudo mkdir -p /var/lib/tftpboot
sudo chown -R tftp:tftp /var/lib/tftpboot
sudo chmod -R 777 /var/lib/tftpboot
echo "TFTP安装完成!目录:/var/lib/tftpboot"#!/bin/bash
# ftp-setup.sh
echo "正在安装FTP服务..."
sudo apt update
sudo apt install -y vsftpd
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.backup
# 创建FTP用户
read -p "输入FTP用户名: " ftpuser
sudo useradd -m -s /bin/bash $ftpuser
sudo passwd $ftpuser
echo "FTP服务安装完成!使用用户名 $ftpuser 连接"TFTP最佳实践:
FTP最佳实践:
混合使用场景:
企业环境示例:
┌─────────────────────────────────────┐
│ 网络设备维护 → TFTP (固件更新) │
│ 开发团队协作 → FTP/FTPS (文件共享) │
│ 管理备份文件 → SFTP (安全传输) │
└─────────────────────────────────────┘通过以上详细介绍,您应该能够根据具体需求选择和配置合适的文件传输服务。对于现代应用,建议优先考虑SFTP或SCP等基于SSH的加密方案,但在特定场景下(如网络设备维护),TFTP和FTP仍有其不可替代的价值。