一、项目速览

入门 · 1 分钟版

如果你经常需要在电脑上连接各种远程服务器或云存储,但厌倦了为每种协议(FTP、SFTP、S3、Azure Blob 等)分别装不同的客户端,Cyberduck 就是那个「一个应用搞定所有」的工具。它是一款开源、免费的跨平台(macOS + Windows)文件传输客户端,支持 15 种以上的存储协议。

它是什么:Cyberduck 是一个图形化的文件管理器,专门用于连接远程存储系统。你可以像操作本地文件夹一样,拖拽上传/下载文件到 FTP 服务器、Amazon S3 桶、Google Drive、OneDrive、Backblaze B2、OpenStack Swift 等。

它解决什么问题:开发者/运维人员常常需要在多个存储平台之间切换文件,每次都要打开不同的工具或命令行。Cyberduck 把所有这些入口统一成一个界面,还支持书签、断点续传、文件夹同步等实用功能。

谁最该用:前端/后端开发者需要部署静态网站到 S3 或 FTP 服务器;运维工程师需要管理多个云存储桶;设计师需要从远程服务器获取素材;以及任何不想记几十条 s3cmd 命令行的普通用户。

作者视角:Cyberduck 有 20 年历史,早期只是 FTP 客户端,后来逐步支持 S3、Azure、Google Drive 等云存储。它的核心优势不是「功能最多」,而是「协议覆盖广且保持一致的 UI 体验」。如果你主要用 S3 和 FTP,它比 FileZilla 更现代,比 AWS CLI 更直观。

二、核心功能与架构

进阶 · 推荐细读

Cyberduck 的架构很清晰:图形界面(GUI) + 命令行工具(CLI) + 核心库。GUI 是给普通用户用的,CLI(叫 duck)适合脚本化操作,核心库则被商业版 Mountain Duck 使用(将远程存储挂载为本地磁盘)。

支持的协议(按使用频率排序):
- FTP / FTPS / SFTP:传统服务器文件传输,SFTP 基于 SSH,比 FTP 更安全
- Amazon S3 及兼容 S3 的服务:如 MinIO、DigitalOcean Spaces、Wasabi
- Microsoft Azure Blob / OneDrive:企业级云存储,支持 SharePoint
- Google Drive / Google Cloud Storage:个人或团队协作
- Backblaze B2:低成本对象存储
- OpenStack Swift / WebDAV:自建云平台
- Dropbox / iRODS / Dracoon:特定场景需求

核心工作流:启动应用 → 点击「新建连接」→ 选择协议 → 填写服务器地址/凭证 → 连接后看到远程文件列表 → 拖拽上传/下载。整个过程跟操作本地文件管理器几乎一样。

独特功能
- Cryptomator 集成:在上传前自动加密文件,服务端即使被攻破也看不到明文
- 书签管理:把常用连接存为书签,支持文件夹分组
- 同步/镜像:支持本地与远程文件夹的双向同步(类似 rsync 的图形版)
- 浏览器集成:在网页中点击 s3://ftp:// 链接时,可以自动唤起 Cyberduck

一句话判断:如果你的工作流涉及 3 种以上不同存储协议,Cyberduck 的「统一入口」价值远大于任何单协议客户端。

Cyberduck 连接界面示意图

三、动手实践

入门

环境准备

macOS 用户:直接去 cyberduck.io 下载 .dmg 安装,或通过 Homebrew 安装:

brew install --cask cyberduck

Windows 用户:下载安装包或通过 Chocolatey 安装:

choco install cyberduck

安装后启动应用,你会看到一个空白的文件管理器窗口,左侧是书签栏,右侧是文件列表区域。

最小可运行示例:连接一个 SFTP 服务器

假设你有一个 Linux 服务器的 SFTP 凭证(IP、端口、用户名、密码或密钥),我们来完成第一次连接。

  1. 点击工具栏的 「新建连接」(或按 Cmd+N / Ctrl+N
  2. 在弹出的对话框中选择协议为 SFTP(SSH File Transfer Protocol)
  3. 填写服务器地址(例如 192.168.1.100)、端口(默认 22)、用户名(例如 root
  4. 认证方式选择 密码SSH 私钥文件(点击右侧文件夹图标选择 .pem 文件)
  5. 点击 「连接」

连接成功后,你会看到远程服务器的文件目录。现在尝试拖拽一个本地文件到窗口里,文件就会自动上传。双击远程文件,它会下载到本地并用默认程序打开。

使用命令行工具 duck(Cyberduck 附带 CLI):

# 列出远程目录
duck --list sftp://root@192.168.1.100:22/home/

# 上传单个文件
duck --upload sftp://root@192.168.1.100:22/home/ ./local-file.txt

# 下载整个文件夹
duck --download sftp://root@192.168.1.100:22/home/remote-dir/ ./local-dir/

常见踩坑 1:连接 SFTP 时如果报错 Algorithm negotiation failed,通常是服务器 SSH 配置太旧。可以在 Cyberduck 的「偏好设置 → SFTP」中勾选「允许不安全的算法」来解决(仅用于兼容旧服务器)。

常见踩坑 2:连接 S3 时,如果使用 MinIO 或其他兼容 S3 的服务,需要在「新建连接」中选择「S3」,然后在「服务器」字段填写 MinIO 的地址(如 http://minio.example.com:9000),而不是默认的 AWS 端点。很多人卡在这里以为 Cyberduck 只支持 AWS。

连接 Amazon S3(云存储示例)

如果你有 AWS 账号,可以这样连接 S3:

  1. 新建连接 → 选择 Amazon S3
  2. 在「访问密钥 ID」和「秘密访问密钥」中填入你的 IAM 用户凭证
  3. 点击连接,右侧会列出所有 S3 桶(Bucket)
  4. 双击一个桶,就可以像操作文件夹一样上传/下载/删除对象

四、进阶玩法

深入 · 老手可选

1. 用 duck CLI 实现自动化备份脚本

duck 命令行工具支持所有 GUI 支持的协议,非常适合写进 cron 脚本。以下是一个每天凌晨备份本地目录到 Backblaze B2 的示例:

#!/bin/bash
# backup-to-b2.sh
BACKUP_DIR="/data/important"
B2_URL="b2://your-bucket-name/backups/"

# 使用 --parallel 加速上传(默认 5 并发)
duck --upload "$B2_URL" "$BACKUP_DIR" \
  --username "your_application_key_id" \
  --password "your_application_key" \
  --parallel 10 \
  --existing compare

# --existing compare 表示只上传新文件或修改过的文件

2. 配置 Cryptomator 加密存储

如果你需要把敏感文件上传到不可信的云存储(如公共 S3 桶),可以启用 Cryptomator 加密:

  1. 在 Cyberduck 中连接 S3(或其他存储)
  2. 右键点击任意文件夹 → 「新建 Cryptomator Vault」
  3. 设置一个强密码(建议 16 位以上)
  4. 以后往这个 Vault 里放文件,Cyberduck 会在上传前自动加密

解密时,只需双击 Vault 文件夹,输入密码即可看到明文文件列表。

作者视角:Cryptomator 的加密是在客户端完成的,服务端只看到乱码文件。这个功能的真正价值在于:你可以放心地把文件存到任何第三方存储上,即使服务商被黑,你的数据也是安全的。但要注意,密码一旦丢失,数据就永远无法恢复——没有「找回密码」功能。

3. 使用书签和快捷键提升效率

Cyberduck 支持书签分组和全局快捷键:

  • Cmd+Shift+B(macOS)打开书签管理器
  • 右键书签 → 「编辑」可以设置默认本地下载目录
  • 通过「偏好设置 → 浏览器」可以设置双击远程文件时,是下载到临时目录还是指定目录

进阶技巧:如果你经常在多个云存储之间同步文件,可以同时打开多个连接窗口(Cmd+T 新建标签页),然后从一个标签页拖拽文件到另一个标签页——Cyberduck 会自动完成跨存储的传输。

五、判断与建议

进阶 · 推荐细读

什么场景下「应该选它」

  • 你需要管理 3 种以上不同存储协议(如 S3 + SFTP + OneDrive),Cyberduck 是唯一一个能让你用一个界面搞定所有连接的工具
  • 你是非技术用户(设计师、产品经理),不想学命令行,但需要从云存储获取文件
  • 你需要跨平台(macOS + Windows 双修),Cyberduck 在两端的体验几乎一致
  • 你需要加密上传,且不想用复杂的 GPG 工具链

什么场景下「不该选它」

  • 你只需要纯 FTP/SFTP,且追求极致速度:FileZilla 的传输性能比 Cyberduck 略好,尤其是在大量小文件场景
  • 你需要批量自动化脚本:虽然 duck CLI 能干活,但 aws s3 cprclone 等专用工具在并发控制和错误处理上更成熟
  • 你是 Linux 用户:Cyberduck 只支持 macOS 和 Windows,Linux 下只能用 CLI 工具 duck,没有 GUI
  • 你需要挂载云存储为本地磁盘:请用 Mountain Duck(商业版,基于 Cyberduck 核心库),不过它要付费

一句话判断:如果你在 macOS/Windows 上工作,且日常需要连接 2 种以上不同类型的远程存储,Cyberduck 是「免费 + 够用」的最佳选择。如果你只用 S3 或只用 FTP,专用工具可能更顺手。

项目信息

项目
仓库 iterate-ch/cyberduck
语言 Java
Star 4,650
Fork 358
主页 https://cyberduck.io/

参考链接