在日常工作中,我们经常需要与远程服务器交互,下载报告、备份文件、上传数据。手动完成这些任务既耗时又容易出错。n8n的FTP/SFTP节点可以帮你自动化所有这些操作!
无论是定时备份日志、同步多个服务器的文件,还是自动化数据传输流程,FTP/SFTP节点都能轻松搞定。这篇教程将从零开始,带你逐步掌握n8n FTP/SFTP节点的核心操作。

**FTP(File Transfer Protocol)**是一种古老但仍然广泛使用的文件传输协议。它就像是一个"邮递员",帮你在本地电脑和远程服务器之间运送文件。
**SFTP(SSH File Transfer Protocol)**则是FTP的现代、安全版本。它使用SSH加密,确保你的文件在传输过程中不会被拦截或篡改。
| 特性 | FTP | SFTP |
|---|---|---|
| 加密 | ❌ 无加密 | ✅ SSH加密 |
| 安全性 | 低 | 高 |
| 端口 | 21 | 22 |
| 认证 | 用户名/密码 | 密码/密钥 |
| 推荐场景 | 内网/非敏感数据 | ⭐ 生产环境(推荐使用) |
结论:如果你的服务器支持SFTP,强烈推荐使用SFTP!它更安全,配置也更简单。
填写以下信息:
Host: 你的服务器地址 (例如: ftp.example.com)
Port: 22 (SFTP默认端口)
Username: 你的用户名
Password: 你的密码
Private Key (可选): 如果使用密钥认证
Passphrase (可选): 如果密钥有密码保护Host: 你的服务器地址
Port: 21 (FTP默认端口)
Username: 你的用户名
Password: 你的密码✨ 小贴士:建议在凭证名称中包含目标服务器信息,如 "MyServer-SFTP",便于日后维护。
场景:检查FTP服务器上是否有新文件到达
配置步骤:
/uploads (远程文件夹路径)输出示例:
{
"name": "report.pdf",
"size": 1024,
"modifyTime": "2025-01-15",
"type": "file"
}场景:从FTP服务器下载日志文件进行处理
配置步骤:
/logs/app.log (完整的文件路径)file_data (输出字段名)关键点:
场景:自动上传备份文件到远程服务器
配置步骤:
/backups/backup_2025_01_15.zip (远程保存路径)file_data (来自前一个节点)常见用法:
前一节点输出 → 创建压缩文件 → FTP上传 → 远程备份完成场景:处理完文件后重命名,标记为"已处理"
配置步骤:
/uploads/report.pdf/processed/report_done.pdf场景:删除已处理的临时文件,保持服务器整洁
配置步骤:
/temp/old_file.txt⚠️ 谨慎使用:删除操作不可逆,请确保路径正确!
每天凌晨2点,自动从服务器A的
/data文件夹下载所有CSV文件,然后上传到服务器B的/backups文件夹
定时触发器(每天2点)
↓
FTP-List(服务器A, 列表/data下的文件)
↓
过滤(只选择*.csv文件)
↓
Loop(对每个文件循环)
↓
FTP-Download(服务器A, 下载文件)
↓
FTP-Upload(服务器B, 上传文件)
↓
发送通知(完成提醒){
"nodes": [
{
"parameters": {
"expression": "0 2 * * *",
"timezone": "Asia/Shanghai"
},
"id": "Schedule",
"name": "Schedule - 2AM Daily",
"type": "n8n-nodes-base.cronTrigger",
"typeVersion": 1,
"position": [250, 300]
},
{
"parameters": {
"path": "/data",
"recursive": true
},
"credentials": {
"ftpCredential": "Server-A-SFTP"
},
"id": "ftp-list",
"name": "FTP List - Server A",
"type": "n8n-nodes-base.ftp",
"typeVersion": 2,
"position": [450, 300]
},
{
"parameters": {
"conditions": {
"string": [
{
"value1": "={{$json.name}}",
"value2": ".csv",
"operation": "endsWith"
}
]
}
},
"id": "filter-csv",
"name": "Filter - CSV Files Only",
"type": "n8n-nodes-base.if",
"typeVersion": 1,
"position": [650, 300]
},
{
"parameters": {
"operation": "download",
"path": "={{'/data/' + $json.name}}",
"outputField": "file_content"
},
"credentials": {
"ftpCredential": "Server-A-SFTP"
},
"id": "ftp-download",
"name": "FTP Download - Server A",
"type": "n8n-nodes-base.ftp",
"typeVersion": 2,
"position": [850, 300]
},
{
"parameters": {
"operation": "upload",
"path": "={{'/backups/backup_' + $now.toFormat('yyyy-MM-dd') + '_' + $json.name}}",
"binaryData": true,
"inputDataFieldName": "file_content"
},
"credentials": {
"ftpCredential": "Server-B-SFTP"
},
"id": "ftp-upload",
"name": "FTP Upload - Server B",
"type": "n8n-nodes-base.ftp",
"typeVersion": 2,
"position": [1050, 300]
},
{
"parameters": {
"subject": "✅ 文件备份完成",
"message": "已成功备份{{$json.name}}到服务器B"
},
"id": "notify",
"name": "Send Notification",
"type": "n8n-nodes-base.emailSend",
"typeVersion": 1,
"position": [1250, 300]
}
],
"connections": {
"Schedule": {
"main": [
[
{
"node": "ftp-list",
"type": "main",
"index": 0
}
]
]
},
"ftp-list": {
"main": [
[
{
"node": "filter-csv",
"type": "main",
"index": 0
}
]
]
},
"filter-csv": {
"main": [
[
{
"node": "ftp-download",
"type": "main",
"index": 0
}
],
[]
]
},
"ftp-download": {
"main": [
[
{
"node": "ftp-upload",
"type": "main",
"index": 0
}
]
]
},
"ftp-upload": {
"main": [
[
{
"node": "notify",
"type": "main",
"index": 0
}
]
]
}
}
}原因:
解决方案:
1. 检查Host和Port是否正确
2. 用SSH客户端测试连接: ssh user@host
3. 检查防火墙是否允许该端口
4. 确认SFTP服务已启动原因:
解决方案:
1. 确认用户名和密码
2. 如使用密钥,转换为OpenSSH格式:
ssh-keygen -p -N "" -m pem -f your_key
3. 检查是否需要Passphrase原因:
解决方案:
1. 先用List操作查看实际路径
2. 确保路径格式: /folder/file.txt
3. 检查文件权限原因:
解决方案:
1. 分段下载较大文件
2. 增加超时设置
3. 检查网络连接稳定性在使用List后连接Download时,添加 "Execute Once" 选项防止无限循环:
FTP-List → [Execute Once: Only on first iteration] → FTP-Download// 为上传的文件添加时间戳
路径: /backups/backup_{{ $now.toFormat('yyyy-MM-dd_HH:mm') }}_file.csv
// 使用循环中的文件名
路径: /archive/{{ $json.name }}// 添加Try-Catch节点处理下载失败
1. FTP-Download
2. IF判断是否成功
3. 失败分支: 发送告警通过本教程,你已经掌握了:
[1] 官方文档: https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.ftp/
[2] n8n系列教程: https://www.undsky.com/blog/?category=n8n%E6%95%99%E7%A8%8B#