CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
DevOps 网络与邮件/课时/FTP 与 SFTP
RawBlame
课时目录12 节

DevOps 网络与邮件

  1. 01网络与运维基础
  2. 02OSI 与分层
  3. 03SSH 远程管理
  4. 04FTP 与 SFTP
  5. 05SMTP 发信
  6. 06IMAP 与 POP3
  7. 07邮件认证
  8. 08编辑器与文本处理
  9. 09版本控制回顾
  10. 10编程语言选型
  11. 11邮件运维排障
  12. 12综合练习

FTP 与 SFTP

ftp-sftp;文件传输选型。

25 分钟

FTP 与文件传输协议

FTP(File Transfer Protocol)是经典的文件传输协议,端口 21(控制)+ 20(主动模式数据) 或 被动模式高位端口。现代 DevOps 更推荐 SFTP/SCP(走 SSH),但 FTP 仍在遗留系统、共享主机、IoT 固件分发中存在。本课衔接 networking-essentials 端口与防火墙知识,结合 linux-essentials 服务管理;安全替代方案见上一课 dnm-ssh。

学习目标

  • 理解 FTP 主动模式 vs 被动模式 及防火墙影响
  • 会用 lftp、ftp 客户端上传下载文件
  • 知道何时选 FTP、何时必须用 SFTP/SCP

FTP 工作模式

模式控制连接数据连接方向防火墙难点
主动 (Active)客户端 → 服务器:21服务器:20 → 客户端客户端防火墙拦 inbound
被动 (Passive)客户端 → 服务器:21客户端 → 服务器:高位端口需开放 passive 端口范围
被动模式(常见)
  Client ──► Server:21   (控制: USER/PASS/ PASV)
  Client ──► Server:50000 (数据: LIST/RETR/STOR)

客户端操作

# 命令行 FTP(不推荐生产,明文密码)
ftp ftp.example.com
# ftp> user anonymous
# ftp> cd pub
# ftp> get readme.txt

# lftp(支持 FTPS、断点续传)
lftp -u username,password ftp.example.com
lftp username@ftp.example.com:~> ls
lftp username@ftp.example.com:~> mirror /remote/dir ./local-dir
lftp username@ftp.example.com:~> put deploy.zip

FTPS vs SFTP

FTP/FTPSSFTP
协议栈独立 FTP + TLSSSH 子系统
端口21 + 数据端口22
加密FTPS 可选 TLS全程加密
DevOps 推荐遗留兼容✅ 默认选择
# SFTP(推荐,见 dnm-ssh)
sftp user@server.example.com
sftp> put app.jar /opt/deploy/

Linux 上搭建 vsftpd(了解即可)

/etc/vsftpd/vsftpd.conf 关键项:

anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
pasv_enable=YES
pasv_min_port=50000
pasv_max_port=50100
ssl_enable=YES
sudo systemctl enable --now vsftpd
sudo firewall-cmd --add-service=ftp --permanent
sudo firewall-cmd --add-port=50000-50100/tcp --permanent
sudo firewall-cmd --reload

防火墙配置参考 net-firewall。生产新系统优先 SFTP,FTP 仅在与第三方强制要求时使用。

CI/CD 中的文件传输

# GitHub Actions 示例:SFTP 部署(非 FTP)
- name: Deploy via SFTP
  run: |
    scp -i ~/.ssh/deploy_key ./dist/* deploy@server:/var/www/html/

配置与密钥管理纳入 git-essentials 的 CI 流程;域名指向见 dns-essentials。

练习

  • 用 lftp 或 sftp 向测试服务器上传一个文件并下载验证
  • 解释被动模式下为何需要在防火墙开放 50000-50100 端口
  • 对比 FTP、FTPS、SFTP 三者的端口与加密差异,写 3 条选型建议

小结

FTP 是遗留文件传输协议;DevOps 默认用 SFTP/SCP 走 SSH。 理解主动/被动模式是为排障遗留 FTP 服务。下一课进入邮件协议——SMTP 发信。

加载本节练习…
← 上一课SSH 远程管理下一课 →SMTP 发信