quicssh
😄 quicssh is a QUIC proxy that allows to use QUIC to connect to an SSH server without needing to patch the client or the server.
Architecture
Standard SSH connection
┌───────────────────────────────────────┐ ┌───────────────────────┐
│ bob │ │ wopr │
│ ┌───────────────────────────────────┐ │ │ ┌───────────────────┐ │
│ │ ssh user@wopr │─┼────tcp──────┼▶│ sshd │ │
│ └───────────────────────────────────┘ │ │ └───────────────────┘ │
└───────────────────────────────────────┘ └───────────────────────┘
SSH Connection proxified with QUIC
┌───────────────────────────────────────┐ ┌───────────────────────┐
│ bob │ │ wopr │
│ ┌───────────────────────────────────┐ │ │ ┌───────────────────┐ │
│ │ssh -o ProxyCommand "quicssh client│ │ │ │ sshd │ │
│ │ --addr %h:4545" user@wopr │ │ │ └───────────────────┘ │
│ │ │ │ │ ▲ │
│ └───────────────────────────────────┘ │ │ │ │
│ │ │ │ │ │
│ process │ │ tcp to localhost:22 │
│ │ │ │ │ │
│ ▼ │ │ │ │
│ ┌───────────────────────────────────┐ │ │┌─────────────────────┐│
│ │ quicssh client --addr wopr:4545 │─┼─quic (udp)──▶│ quicssh server ││
│ └───────────────────────────────────┘ │ │└─────────────────────┘│
└───────────────────────────────────────┘ └───────────────────────┘
Usage
$ quicssh -h
NAME:
quicssh - A new cli application
USAGE:
quicssh [global options] command [command options] [arguments...]
VERSION:
0.0.0
COMMANDS:
server
client
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--help, -h show help (default: false)
--version, -v print the version (default: false)
Client
$ quicssh client -h
NAME:
quicssh client -
USAGE:
quicssh client [command options] [arguments...]
OPTIONS:
--addr value (default: "localhost:4242")
--help, -h show help (default: false)
Server
$ quicssh server -h
NAME:
quicssh server -
USAGE:
quicssh server [command options] [arguments...]
OPTIONS:
--bind value (default: "localhost:4242")
--help, -h show help (default: false)
Install
$ go get -u moul.io/quicssh
License
© 2019-2021 Manfred Touron - Apache-2.0 License