6 个版本
0.1.5 | 2023 年 8 月 22 日 |
---|---|
0.1.4 | 2023 年 8 月 11 日 |
0.0.17 | 2023 年 8 月 1 日 |
在 开发工具 中排名 437
每月下载量 61 次
80KB
2K SLoC
内容
依赖项
bash
,curl
,tar
: 安装这些实用程序。
安装
要使用 scs
,
yarn add @onboardbase/secure-share # npm i @onboardbase/secure-share
或者,如果你的机器上安装了 Rust
cargo install scs
或者,使用 curl
curl https://onboardbase.github.io/secure-share-sh/ | bash
备注
- 对于 Windows 用户,请使用
Git Bash
或任何其他带有 Bourne Shell 的 CLI。 - 对于使用 Rust 的机器,确保
rustup
目录在您的PATH
中。
scs --help
您应该会看到一个显示 scs
服务的响应。
Share anything with teammates across machines via CLI.
Usage: scs [OPTIONS] <MODE>
Arguments:
<MODE> The mode (send secrets, or receive secrets). e,g `scs send` or `scs receive`
Options:
-s, --secret <SECRET>
Separated list of secrets to share. The key-Value pair is separated by a comma. "my_key,my_value"
-m, --message <MESSAGE>
List of messages or a message string to deliver to the receiver. e,g -m "Hi there" -m "See me"
-f, --file <FILE>
List of file paths of files to deliver to the receiver. e,g -f "/path/to/file1" -f "../path/to/file2"
-r, --remote-peer-id <REMOTE_PEER_ID>
Peer ID of the remote to send secrets to
-p, --port <PORT>
Port to establish a connection on
-d, --debug...
Turn debugging information on
-h, --help
Print help
-V, --version
Print version
用法
scs
允许在不同机器和不同网络背后的团队成员之间传输秘密或消息。要分享一个秘密,发送者和接收者必须像上面描述的那样获取 scs
并遵循以下说明。
接收者
打开终端或 cd
到 scs
安装的位置,然后
scs receive
scs
以监听模式启动并分配一个 PeerId
,并随机选择一个端口开始。可选的 -p
标志可以用来指定端口。应该会显示如下类似的响应
INFO Your PeerId is: 12D3KooWA768LzHMatxkjD1f9DrYW375GZJr6MHPCNEdDtHeTNRt
INFO Listening on "/ip4/172.19.192.1/tcp/54654"
INFO Listening on "/ip4/192.168.0.197/tcp/54654"
INFO Listening on "/ip4/127.0.0.1/tcp/54654"
INFO Listening on "/ip4/157.245.40.97/tcp/4001/p2p/12D3KooWDpJ7As7BWAwRMfu1VU2WCqNjvq387JEYKDBj4kx6nXTN/p2p-circuit/p2p/12D3KooWA768LzHMatxkjD1f9DrYW375GZJr6MHPCNEdDtHeTNRt"
发送者
获取您想发送秘密的队友的 PeerId
,然后
scs send -r 12D3KooWA768LzHMatxkjD1f9DrYW375GZJr6MHPCNEdDtHeTNRt -s "hello, world"
scs
会打印出您的 IP 地址和您的 PeerId
。为了验证连接是否建立以及您的机器是否可以与队友通信,您应该在终端中看到类似以下内容
INFO Your PeerId is: 12D3KooWRpqX3QUvPNHXW5utkceLbx2b1LKfuAKa3iLdXXBGB2bY
INFO Listening on "/ip4/127.0.0.1/tcp/40479"
INFO Listening on "/ip4/192.168.212.254/tcp/40479"
INFO Established connection to 12D3KooWA768LzHMatxkjD1f9DrYW375GZJr6MHPCNEdDtHeTNRt via /ip4/157.245.40.97/tcp/4001/p2p/12D3KooWDpJ7As7BWAwRMfu1VU2WCqNjvq387JEYKDBj4kx6nXTN/p2p-circuit/p2p/12D3KooWA768LzHMatxkjD1f9DrYW375GZJr6MHPCNEdDtHeTNRt
发送者尝试发送秘密,如果成功,scs
会将消息转发给双方,并通知他们秘密共享会话的状态和进度。
文件
scs
也支持发送文件
scs send -r 12D3KooWLaLnHjKhQmB46jweVXCDKVy4AL58a4S4ZgHZGuJkzBf9 -f ../path/to/file1 -f path/to/file2
消息
普通消息也可以共享
scs send -r 12D3KooWLaLnHjKhQmB46jweVXCDKVy4AL58a4S4ZgHZGuJkzBf9 -m "hi there" -m "foo"
这三个项目也可以一起发送。
配置
截至 v0.0.12
,scs
允许传递配置文件。端口、白名单和项目都可以直接配置,而不是作为参数传递。示例配置文件可以在这里找到。例如
port: 5555 #An optional port defaults to 0 if not present
save_path: "default"
secret: # Optional during receive
- key: foo
value: bar
- key: baz
value: woo
message: # Optional during receive
- new message from me
- test message
file: # Optional during receive
- "./dev_build.sh"
debug: 1 # Compulsory. 0 is for off, and 1 and above for on
blacklists:
- 34.138.139.178
whitelists:
- 34.193.14.12
connection: trusted # or self
seed: "scsiscool"
scs receive -c ./config.yml
或对于发送者
scs send -r 12D3KooWLaLnHjKhQmB46jweVXCDKVy4AL58a4S4ZgHZGuJkzBf9 -c ./config.yml
白名单/黑名单 IP 地址
白名单和黑名单控制来自指定 IP 的流量。要启用此功能,请将 IP 列表添加到配置文件中。如果没有提供白名单 IP,则允许所有连接。但是,如果指定了白名单 IP,则只允许来自这些地址的流量。例如 127.0.0.1(本地主机)或 192.0.0.0(防火墙访问点)这样的通用 IP 不会起作用。
签名证书
接收者可以配置 scs
只允许来自使用 CA 签名的证书的用户或仅来自自签名证书的用户连接。将 connection: trusted
或 connection: self
添加到配置文件中。
种子(种子密钥)
scs
的核心是 PeerId
。每当接收者和发送者开始一个会话时,都会随机生成一个 PeerId
。截至 v0.1.3
的 scs
,PeerId
现在是确定的;单个 PeerId
可以使用一生。为此,您需要设置一个“种子”。PeerId
是根据这个种子生成的。只要种子密钥保持不变,PeerId
就会保持不变。种子密钥是一个长度小于 32 的字符串。但为了方便和最佳配置,我们建议使用 4 或 5 个字母的单词,如上面的配置文件所示。
保存 Peer 信息
在初始设置之后,为了让使用 scs
更容易,scs
实现了一种简单的机制来存储接收者的信息。在与新同伴的每次会话之后,scs
会询问你是否想保存已连接同伴的信息。如果你决定向该同一同伴发送信息,可以将同伴的名称传递给以下 -n
参数
scs send -n dante -c config.yml
注意:出于安全原因,我们不会在每台机器上保存已连接同伴的 IP 地址。
查看所有已保存的同伴
scs list
项目存储位置
发送的项目(秘密、文件和消息)存储在机器的本地文件夹中。要查找已保存的项目
- Windows:
/c/Users/<name_of_user>/AppData/Local/onboardbase/secureshare/data
- Linux:
/home/<name_of_user>/.local/share/secureshare
- Mac:
/Users/<name_of_user>/Library/Application Support/com.onboardbase.secureshare
贡献
欢迎任何形式的贡献!请参阅贡献指南。
路线图
协议
- AutoNat:如果你仔细观察,
scs
假设两个同伴都在 NAT、防火墙或代理后面。但有时情况可能并非如此,仅仅为了这个就进行打洞是过度的。实现AutoNat
将首先检查两个同伴是否可以直接通信。如果不能,它将接着进行打洞。使用 TCP 可能需要 3 到 10 秒钟,这就是 QUIC 如何提高scs
速度的地方。
许可协议
请参阅 LICENSE © Onboardbase
技术细节
scs
在幕后采用的重要技术细节是 P2P 共享。以下是一些关于 P2P 共享和打洞的优秀和详细资源。祝您阅读愉快!!
依赖项
~55–92MB
~1.5M SLoC