USSH 是一种基于 USTP-Secure 构建的 shell 协议及客户端/服务器端程序对。
它不是 TCP 隧道,也不会将 SSH 封装在 TCP 中。
状态:Beta
许可证:MIT
chacha20 = CHACHA20_POLY1305aes-256-gcm = AES_256_GCMaes-128-gcm = AES_128_GCMchacha205322python3 ussh_server.py \
--peer-ip <CLIENT_IP_OR_DOMAIN> \
--peer-port 0 \
--bind-ip 0.0.0.0 \
--bind-port 5322 \
--cipher chacha20 \
--congestion-control auto
如果省略 --password,服务器端将在启动时提示输入 USSH 登录密码。
在交互式启动时,服务器端会询问是否将其自身安装为 systemd 服务。回答 n 可正常运行。使用 --no-systemd-prompt 可跳过该问题。
python3 ussh_client.py \
--peer-ip <SERVER_IP_OR_DOMAIN> \
--peer-port 5322 \
--bind-ip 0.0.0.0 \
--bind-port 0 \
--cipher chacha20 \
--congestion-control off \
--cleartext off
客户端会像 SSH 一样交互式地提示输入密码。
客户端将首次看到的服务器 X25519 公钥存储在 ~/.ussh_known_hosts.json 中。
如果该密钥之后发生变化,客户端会以 TOFU 不匹配错误中止,而不是静默信任新密钥。
如果你有意轮换服务器主机密钥,请使用 --regen-key 运行客户端,以便在交互式确认后允许替换存储的 TOFU 密钥。
USSH Internet-Draft:https://datatracker.ietf.org/doc/draft-x1co-ussh/--cleartext auto|on|off--cleartext on|offauto 时,USSH 遵循客户端请求。on 或 off 时,服务器端强制指定最终的明文模式。--cleartext on 时,USSH 会打印警告,提示明文在真实互联网上存在危险,仅建议在受控环境(如本地网络)中使用。ACK: 10 MAC:<tag>、NACK: 42 MAC:<tag>、HELLO: ...、CLOSE:,以及二进制 UPACK(UPAK)DATA 帧。ACK 和 NACK 保持明文以便调试,但它们带有每会话 HMAC 标签进行认证,以防止伪造的 ACK/NACK 控制攻击。USTPS Congestion 为 on 还是 off。UPACK DATA 载荷 900 字节的载荷上限。IP:port 发生变化,当前 USSH 会话预计将关闭,用户应干净地重新连接。IP:port 上验证客户端,将会话绑定到该端点,如果端点发生变化则重新连接。USTPS Congestion。--congestion-control auto|on|off--congestion-control on|offauto 时,USSH 遵循客户端请求。当服务器端为 on 或 off 时,服务器端强制指定最终模式。stdout 字节流。ls、find 或编译器日志。ussh_server.py 的机器上启动一个真正的 PTY 支持的 shell。--cipher,则服务器端使用该确切密码。--cipher 或设置为 auto,则服务器端使用客户端请求的密码。~/.ussh_host_key 中保留持久的 X25519 主机密钥,以便 TOFU 在重连和重启后保持稳定。--regen-key。<peer-ip-or-domain>:<peer-port> 存储,因此位于不同地址/端口的不同服务器被视为不同的主机身份。