文件传输工具croc
背景
经常有需求要在同一网络的不同设备中传输文件.
目前的一些方案,但在各方面都有些限制.
- 使用ssh或rsync
- 需要两个主机都安装ssh,都要做好配置
- 密钥文件可能不能给
- 如果是密码可能需要次次输入.
- 命令稍微复杂
- 使用局域网聊天软件
- 大多数仅限于在windows平台上使用,难以覆盖全平台
- 有些软件构建了需要中心的网络.操作/功耗方面都比较糟心.
正好HelloGitHub第68期看到了croc工具,觉得不错
介绍
croc是一个用于跨设备互传文件的工具,主打特色
- 无需中心服务器,在两台机器之间建立点对点连接.
- 安全性方面使用端到端加密.
- 跨一些平台(windows,linux,mac),可惜没有Android
- 支持传文件夹
原理方面
- croc使用公共的中继服务器辅助建立连接
- 不过提供了自建中继的方法
- 使用PAKE进行端到端加密
初步使用
1 | 发送方 |
croc并不限制网络位置,即便不在同一局域网,也能互相找到.
- 算是一个优点
- 不需要固定ip
- 不需要配置端口转发
- 对房间号提出了要求,不能太短.
此外
- 还能传输单纯的文字
- 还能在管道中使用
- 官方提供了适当的二次开发指导
配置自定义中继服务器
中继服务器端
运行 croc relay
, 即可搭建一个中继服务器.
会在几个端口(比如9009-9013)开始监听.
可以自定义端口但至少要有两个(一个传文件,一个传指令).
一般最小的那个端口传指令(比如上面的9009).
甚至官方还提供了使用docker部署的指导
1 | docker run -d -p 9009-9013:9009-9013 -e CROC_PASS='YOURPASSWORD' schollz/croc |
其他端
需要使用参数来指定使用哪个中继服务器.
如果有密码还要指定密码
1 | croc --pass YOURPASSWORD --relay "myreal.example.com:9009" send [filename] |
甚至官方还贴心地考虑了命令行暴露密码的问题,
允许使用 --pass FILEWITHPASSWORD
的方式指定密码.
在局域网中使用
这样可以在局域网中一台公共的设备上,建立一个中继服务器.
然后其他电脑统一配置好croc相关的alias,然后就能较为安全地传输文件了.
- 发送方似乎不检测中继服务器是否存在,而接收方会
- 使用glances查看了一会儿,似乎性能上没有太大问题