2 个不稳定版本
0.2.0 | 2024 年 3 月 3 日 |
---|---|
0.1.0 | 2022 年 9 月 22 日 |
在 网络编程 中排名 1193
每月下载量 26
用于 2 crates
290KB
6.5K SLoC
Sunset SSH
一个 SSH 客户端和服务器实现。它旨在非常灵活,几乎可以嵌入到任何地方,我在 讨论 中收集了可能的用例。不要犹豫,提出建议!
此软件处于早期阶段。它适用于某些应用,但肯定会发生 API 更改
-
sunset
(此顶层)是核心 SSH 实现。它提供非异步 API,以no_std
和无分配运行。 -
sunset-embassy
- 异步 SSH 客户端和服务器库,也是no_std
。此库使用 Embassy crate,但对异步执行器无关。 -
embassy/demos
包含使用 Embassy 执行器在 Raspberry Pi 上进行 wifi 的演示,或者在一个 Pico W 或在 std 的 Linux tap 设备上运行本地。目前 Pico W 的构建大小约为 150kB 二进制文件(加上 ~200KB 的 cyw43 wifi 固件),每个并发 SSH 会话使用约 15kB RAM(最大堆栈大小尚未确认)。
-
sunset-async
为在正常 Rust(非no_std
)中将 Sunset 作为正常 SSH 客户端或服务器异步库使用添加了功能。此库使用 Tokio 或 async-std。示例包括 Linux 命令行 SSH 客户端
sunsetc
。它作为日常 SSH 客户端运行。
SSH 功能
工作
- shell 或命令连接
- 密码和公钥认证
- ed25519 签名
- curve25519 密钥交换
- chacha20-poly1305, aes256-ctr 加密算法
- hmac-sha256 完整性验证
- rsa(除非有人编写了
no_std
crate,否则仅限std
) ~.
客户端转义序列
推荐
- TCP 转发
- dh-group14(可能仅限
std
,需要调查 crates) - 可能 aes256-gcm
- 可能 ECDSA,硬件通常比 ed25519 更早支持它
- SFTP
Rust 版本
目前 Sunset 将使用最新的稳定版(撰写时为 1.75)。
安全性
Sunset 使用 forbid(unsafe)
,除了 sunset-async
,它需要 unsafe
以进行 Unix 交互。
发布构建不应崩溃,而是应返回 Error::bug()
。在测试或模糊测试期间,某些地方使用 debug_assert!
用于不变量。
已尝试在使用后清除敏感内存,但栈副本不会被清除。
作者
马特·约翰逊 [email protected]
它建立在大量其他工作的基础上,特别是 Embassy,rust-crypto crates,Virtue,smoltcp 和 Salty。
依赖项
~4.5–7MB
~142K SLoC