7个版本
0.1.5 | 2024年4月19日 |
---|---|
0.1.5-dev | 2024年4月16日 |
0.1.4+autopublish | 2024年3月17日 |
0.1.2 | 2024年1月3日 |
0.1.1 | 2023年5月2日 |
#1266 在 网络编程
每月25次下载
26KB
441 代码行
quicssh-rs
😄 quicssh-rs 是一个QUIC代理,允许使用QUIC连接到SSH服务器,无需修补客户端或服务器。
quicssh-rs
是 quicssh 的Rust实现。它基于 quinn 和 tokio
为什么使用QUIC?因为SSH在TCP连接环境中容易受到攻击,而且大多数SSH数据包实际上很小,因此只需要保持SSH连接就可以在任何网络环境中使用。QUIC是一个很好的选择,因为它具有良好的弱网络优化和重要的连接迁移功能。这意味着我可以在远程时自由切换Wi-Fi网络,确保SSH连接的稳定性。
演示
为什么不使用mosh?
因为mosh的架构需要打开许多端口以支持控制和数据连接,这在许多环境中不太友好。此外,vscode远程开发不支持mosh。
架构
标准SSH连接
┌───────────────────────────────────────┐ ┌───────────────────────┐
│ bob │ │ wopr │
│ ┌───────────────────────────────────┐ │ │ ┌───────────────────┐ │
│ │ ssh user@wopr │─┼────tcp──────┼▶│ sshd │ │
│ └───────────────────────────────────┘ │ │ └───────────────────┘ │
└───────────────────────────────────────┘ └───────────────────────┘
通过QUIC代理的SSH连接
┌───────────────────────────────────────┐ ┌───────────────────────┐
│ bob │ │ wopr │
│ ┌───────────────────────────────────┐ │ │ ┌───────────────────┐ │
│ │ssh -o ProxyCommand "quicssh-rs │ │ │ │ sshd │ │
│ │ client quic://%h:4433 │ │ │ └───────────────────┘ │
│ │ user@wopr │ │ │ ▲ │
│ └───────────────────────────────────┘ │ │ │ │
│ │ │ │ │ │
│ process │ │ tcp to localhost:22 │
│ │ │ │ │ │
│ ▼ │ │ │ │
│ ┌───────────────────────────────────┐ │ │┌─────────────────────┐│
│ │ quicssh-rs client wopr:4433 │─┼─quic (udp)──▶│ quicssh-rs server ││
│ └───────────────────────────────────┘ │ │└─────────────────────┘│
└───────────────────────────────────────┘ └───────────────────────┘
用法
$ quicssh-rs -h
A simple ssh server based on quic protocol
Usage: quicssh-rs <COMMAND>
Commands:
server Server
client Client
help Print this message or the help of the given subcommand(s)
Options:
--log <LOG_FILE> Location of log, Default if
--log-level <LOG_LEVEL> Log level, Default Error
-h, --help Print help
-V, --version Print version
客户端
$ quicssh-rs client -h
Client
Usage: quicssh-rs client [OPTIONS] <URL>
Arguments:
<URL> Server address
Options:
-b, --bind <BIND_ADDR> Client address
-h, --help Print help
-V, --version Print version
客户端SSH配置
╰─$ cat ~/.ssh/config
Host test
HostName test.test
User root
Port 22333
ProxyCommand /Users/ouyangjun/code/quicssh-rs/target/release/quicssh-rs client quic://%h:%p
╰─$ ssh test
Last login: Mon May 1 13:32:15 2023 from 127.0.0.1
服务器
$ quicssh-rs server -h
Server
Usage: quicssh-rs server [OPTIONS]
Options:
-l, --listen <LISTEN> Address to listen on [default: 0.0.0.0:4433]
-p, --proxy-to <PROXY_TO> Address of the ssh server [default: 127.0.0.1:22]
-h, --help Print help
-V, --version Print version
依赖项
~17–26MB
~512K SLoC