| Crates.io | quicssh-rs-robust |
| lib.rs | quicssh-rs-robust |
| version | 0.1.6-dev |
| created_at | 2026-01-07 06:28:54.900224+00 |
| updated_at | 2026-01-07 06:28:54.900224+00 |
| description | A stabilized fork of quicssh-rs - QUIC proxy for SSH with enhanced network compatibility. WARNING: By default, QUIC certificate verification is disabled for ease of use; use at your own risk or enable verification with proper certificates. |
| homepage | https://github.com/hkatsuma/quicssh-rs-robust |
| repository | https://github.com/hkatsuma/quicssh-rs-robust |
| max_upload_size | |
| id | 2027615 |
| size | 109,081 |
This is a fork of oowl/quicssh-rs focused on stabilization and robustness for production use.
This fork aims to stabilize quicssh-rs for reliable SSH-over-QUIC connections in diverse network environments.
--mtu-upper-bound option
--mtu-upper-bound safety: Conservative 1200 bytes per RFC 9000 §14.1 and RFC 8899 §5.1.2
--mtu-upper-bound 1300)cfg condition to properly enable MTU discovery on Linux:smile: quicssh-rs is a QUIC proxy that allows to use QUIC to connect to an SSH server without needing to patch the client or the server.
quicssh-rs is quicssh rust implementation. It is based on quinn and tokio
Why use QUIC? Because SSH is vulnerable in TCP connection environments, and most SSH packets are actually small, so it is only necessary to maintain the SSH connection to use it in any network environment. QUIC is a good choice because it has good weak network optimization and an important feature called connection migration. This means that I can switch Wi-Fi networks freely when remote, ensuring a stable SSH connection.
Because the architecture of mosh requires the opening of many ports to support control and data connections, which is not very user-friendly in many environments. In addition, vscode remote development does not support mosh.
IMPORTANT: By default, this tool disables QUIC certificate verification for ease of use with self-signed certificates. This is acceptable for most SSH use cases because:
However, you should be aware that:
Without QUIC certificate verification, an attacker who can spoof DNS or hijack IP routing could:
To eliminate this risk, you can:
--verify-cert flag with proper TLS certificates (not implemented yet; not available in current releases)Recommendation: For sensitive environments, consider implementing certificate verification or using SSH's built-in security features (host key pinning, certificate authentication) as your primary defense.
Standard SSH connection
┌───────────────────────────────────────┐ ┌───────────────────────┐
│ bob │ │ wopr │
│ ┌───────────────────────────────────┐ │ │ ┌───────────────────┐ │
│ │ ssh user@wopr │─┼────tcp──────┼▶│ sshd │ │
│ └───────────────────────────────────┘ │ │ └───────────────────┘ │
└───────────────────────────────────────┘ └───────────────────────┘
SSH Connection proxified with QUIC
┌─────────────────────────────────────┐ ┌───────────────────────┐
│ bob │ │ wopr │
│ ┌─────────────────────────────────┐ │ │ ┌───────────────────┐ │
│ │ssh -o ProxyCommand= │ │ │ │ sshd │ │
│ │ "quicssh-rs-robust client │ │ │ └───────────────────┘ │
│ │ quic://%h:4433" user@wopr │ │ │ ▲ │
│ └─────────────────────────────────┘ │ │ │ │
│ │ │ │ │ │
│ process │ │ tcp to localhost:22 │
│ │ │ │ │ │
│ ▼ │ │ │ │
│ ┌─────────────────────────────────┐ │ │ ┌───────────────────┐ │
│ │quicssh-rs-robust client │─┼─quic (udp)─▶│ │quicssh-rs-robust │ │
│ │ wopr:4433 │ │ │ │ server │ │
│ └─────────────────────────────────┘ │ │ └───────────────────┘ │
└─────────────────────────────────────┘ └───────────────────────┘
$ quicssh-rs-robust -h
A simple ssh server based on quic protocol
Usage: quicssh-rs-robust <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-robust client -h
Client
Usage: quicssh-rs-robust client [OPTIONS] <URL>
Arguments:
<URL> Server address
Options:
-b, --bind <BIND_ADDR> Client address
--mtu-upper-bound <MTU_UPPER_BOUND>
MTU upper bound: numeric value (e.g., 1200) or "safety" for RFC-compliant 1200 bytes
-h, --help Print help
-V, --version Print version
╰─$ cat ~/.ssh/config
Host test
HostName test.test
User root
Port 22333
ProxyCommand /path/to/quicssh-rs-robust client quic://%h:%p
╰─$ ssh test
Last login: Mon May 1 13:32:15 2023 from 127.0.0.1
$ quicssh-rs-robust server -h
Server
Usage: quicssh-rs-robust 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
-F, --conf <CONF_PATH>
--mtu-upper-bound <MTU_UPPER_BOUND>
MTU upper bound: numeric value (e.g., 1200) or "safety" for RFC-compliant 1200 bytes
-h, --help Print help
-V, --version Print version