croc 是一款开源的点对点文件传输 CLI 工具,让任意两台电脑无需登录就能互相发送文件和文件夹。支持 Windows/macOS/Linux/BSD 全平台,PAKE 协议端到端加密,可自托管中继服务器。单二进制零依赖,安装一条命令搞定,30 秒完成跨网络文件传输。
🎤 引言
你有没有过这种烦恼:想给同事发个几百 MB 的文件,微信传不了,企业邮箱又被附件大小卡住,临时注册个网盘账号又嫌麻烦?或者两台不同内网的服务器之间互传文件,没有 VPN 也没有可路由的公网 IP,开个 SSH 反向代理又显得小题大做。
croc 正是为这种"想立刻发点东西"的场景而生——一个用 Go 语言写的命令行小工具,让任意两台电脑之间能"免登录、点对点"地传输文件。它 GitHub 上已经斩获 37.7k Stars(2026 年 7 月数据),靠着 PAKE 加密 + 中继转发这套组合拳,正在成为越来越多极客替代魔法虫洞(Magic Wormhole)的首选。
⭐ 核心功能
croc 之所以让人眼前一亮,是因为它在「简单」和「安全」之间找到了相当聪明的平衡点。下面是它最实用的几大特性:
- 跨网络点对点传输
任意两台电脑都能借助中继服务器互通,不要求同处一个内网,也不要求有公网 IP。默认使用作者运营的公共中继(croc.schollz.com),也可一键切换到自部署的私有 relay。 - PAKE 协议端到端加密
通信双方通过一段"代码短语"(code phrase)协商密钥,中继服务器只负责转发密文,看不到明文内容。即便中继被攻陷,文件也安全,因为密钥根本没经过它。 - 支持文件和文件夹,支持 glob
直接传单个文件、传整个目录、用通配符一次发一堆——croc 都接得住。v10.4.0 之后引入的 zip 压缩 + 断点续传,发几个 G 的内容也不慌。 - 单二进制零依赖
Go 1.25 编译的全平台单个二进制,扔到任何机器上直接能跑。即便是 ARMv5、RISC-V 这种冷门架构,作者也提供了 release。 - 断点续传
网络抖动了不用重头再来。重连后从断点继续,对跨国大文件传输体验提升巨大。 - 多语言客户端
官方 CLI 是主力,但社区还开发了 Android GUI 客户端crocgui、Python 版本、Electron 客户端等,不会命令行也能用。 - 可自托管完全可控
企业用户可以用--relay参数指向自家服务器,再叠加--pass设密码,做到数据不离开公司内网。
📥 安装与使用
croc 的安装非常"极客友好"——一行命令搞定全平台。
macOS(Homebrew)
brew install crocWindows(任选其一)
scoop install croc
choco install croc
winget install schollz.crocLinux / macOS / Windows(Conda)
conda install -c conda-forge crocDocker
docker pull schollz/croc源码 / 预编译二进制
直接到 Release 页面 下载对应平台即可。v10.4.14 起恢复了 Windows ARM64 的 CI 编译。
最简用法:发送 + 接收
发送方:
croc send --code "happy-croc-123" ~/Downloads/设计稿.zip接收方(另一台电脑):
croc happy-croc-123中间会弹出一句"Press a key to confirm code phrase",双方确认一致后传输就开始。接收端进度条会实时更新速度。
进阶用法:自定义中继 + 密码
# 启动自托管 relay(一次性)
croc relay --ports 9009-9013
# 发送方指向自家 relay 并加密码
croc --relay "192.168.1.10:9009" --pass "MySecret" send ~/data.dbv10.5.0(2026-07-21 发布)之后还修复了 sender 在本地 relay 和外部 relay 之间的路由竞态(参见 #1162),大文件传输稳定性更上一层楼。
🎯 适用场景
- 临时给同事/朋友发大文件:不想注册网盘、怕邮箱被附件大小卡住
- 个人多设备数据同步:从家里 NAS 临时拖文件到公司电脑
- 运维跨网段传文件:比如两个不同 VPC 之间没有 peering
- 离线客户环境传补丁:客户机器不能上网,但能跟一台公网中继握手
- 隐私敏感的数据:PAKE 加密 + 自托管 relay,规避第三方存储的信任问题
- 脚本自动化传输:作为部署流水线的一环,扔进 CI 里传产物
🔍 对比 / 替代方案
| 工具 | 跨网络 | 端到端加密 | 需安装依赖 | 多端客户端 | 单二进制 |
|---|---|---|---|---|---|
| croc | ✅ | ✅(PAKE) | ❌ 零依赖 | ✅ CLI/GUI/Mobile | ✅ |
| Magic Wormhole | ✅ | ✅ | ✅ Python 生态 | ✅ | ❌ |
| wormhole-william | ✅ | ✅ | ❌ | CLI | ✅(Go) |
| SCP / SFTP | ❌ 同网段/需 SSH | ✅ SSH | ❌ | CLI | ✅ |
| 微信 / 邮件 / 网盘 | ✅ | ❌ 上传第三方 | - | ✅ | ❌ |
- 与 Magic Wormhole 比:croc 不依赖 Python 生态,单个二进制就能跑;对 Windows 极客更友好;支持 glob 模式多文件 + 断点续传 + 自托管 relay。代价是两者协议不互兼容(参见 Issue #71),你不能用 croc 给一个 magic-wormhole 用户发文件。
- 与 wormhole-william 比:wormhole-william 是 Magic Wormhole 的 Go 实现,协议上保持兼容;croc 走自己的 PAKE 路径,独立演进。
- 与 SCP/SFTP 比:必须 SSH 到对方机器或同子网,跨地域基本歇菜。croc 走中继是天然优势,缺点是依赖中继可用性。
- 跟微信/网盘比:croc 不依赖任何第三方账号、不上传到云、端到端加密,隐私性完胜。但缺少"开箱即用"的 GUI 客户端,普通家庭用户门槛仍在。
⚠️ 注意事项
跟大多数工具一样,croc 也不是"完美无缺"。基于 GitHub Issues 的真实反馈,主要有以下几点要留意:
- 依赖发送接收双方同时在线
跟 magic-wormhole 一样,发送和接收必须同时在线。如果收方机器是一台临时唤醒的笔记本,需要提前开机;或者改用作者推荐的"qrcdo"模式让收方扫码触发连接。 - 公共 relay 的中继方不可控
默认走作者运营的croc.schollz.com,虽然数据是端到端加密的,但流量元数据(发送方、接收方、文件大小、IP)依然过中继。处理敏感信息务必用私有 relay,可参考 Issue #1040 关于 relay hosting 的讨论。 - 协议碎片化问题
croc 和 magic-wormhole 是两个独立的生态,互相传不了文件(社区吐槽多年的 Issue #71)。如果你的协作方在用别的 wormhole 工具,croc 帮不了你——除非你自己起一套中继 + 当翻译官。 - 跨洋高丢包网络偶尔需要手动重试
断点续传自 v10.4.0 之后已经相对稳定(参见 PR #1144),但跨太平洋、跨国高延迟线路下仍可能中途失败,需要重新运行croc <code>。 - 公共 relay 带宽上限
作者运营的公共 relay 是免费 + 公益性质的,带宽有上限。如果你是高频重度用户,建议直接croc relay起一个自家节点。
✅ 总结
优点
- 安装一行命令,零依赖,全平台覆盖(含 ARMv5、RISC-V)
- PAKE 加密 + 默认 passphrase,一句话就能安全发件
- 支持断点续传、glob 模式、自托管 relay
- 社区活跃,37.7k Stars + 持续 release(最新 v10.5.0,2026-07-21)
缺点
- 与 magic-wormhole 不兼容,生态割裂
- 公共 relay 元数据可见,敏感数据需自托管
- 必须发送接收双方同时在线
推荐指数:⭐⭐⭐⭐(4/5)
适合谁:需要临时跨网段/跨网络发文件的极客、运维、隐私敏感用户。
不适合:完全不会用命令行的普通家庭用户(虽然有 GUI 客户端,但用得不多)。
如果你受够了 U 盘、企业邮箱附件、临时网盘账号——croc 至少值得你 brew install croc 试一次,五分钟就能上手。
了解更多: