SSH Protocol Support
ZestSSH implements the SSH 2.0 protocol. SSH 1.x is not supported and will not be added --- it has known cryptographic weaknesses and has been deprecated for over a decade.
Protocol Version
Section titled “Protocol Version”SSH-2.0 as defined by RFC 4253 (The Secure Shell Transport Layer Protocol). ZestSSH’s SSH engine is zest_ssh_core, an open-source MIT-licensed fork of dartssh2. During the protocol handshake ZestSSH advertises the identification string SSH-2.0-zest_ssh_core_0.2.1.
Core RFCs
Section titled “Core RFCs”ZestSSH’s SSH implementation covers the following core specifications:
| RFC | Title | Coverage |
|---|---|---|
| RFC 4250 | SSH Protocol Assigned Numbers | Identifiers and constants |
| RFC 4251 | SSH Protocol Architecture | Overall architecture |
| RFC 4252 | SSH Authentication Protocol | Password, publickey, keyboard-interactive |
| RFC 4253 | SSH Transport Layer Protocol | Key exchange, encryption, integrity |
| RFC 4254 | SSH Connection Protocol | Channels, sessions, forwarding |
Authentication Methods
Section titled “Authentication Methods”| Method | RFC | Supported |
|---|---|---|
publickey | RFC 4252 | Yes |
password | RFC 4252 | Yes |
keyboard-interactive | RFC 4256 | Yes |
hostbased | RFC 4252 | No |
none | RFC 4252 | No |
The publickey method covers plain keys, OpenSSH user certificates (*[email protected]), and FIDO2 security-key (sk-*@openssh.com) credentials presented through the OS ssh-agent on desktop. Keyboard-interactive authentication is used for two-factor authentication prompts and systems that use PAM challenges beyond simple passwords.
Key Exchange Algorithms
Section titled “Key Exchange Algorithms”See Supported KEX Algorithms for the full list.
From 2.1.0, ZestSSH offers the two post-quantum hybrid exchanges first (mlkem768x25519-sha256, the OpenSSH 9.9+ default, and sntrup761x25519-sha512, the OpenSSH 9.0 to 9.8 default), then Curve25519, ECDH with NIST curves, Diffie-Hellman group exchange, and fixed-group DH. A server that supports neither hybrid negotiates a classic exchange; the session details show which one was used, with a Post-quantum badge for the hybrids.
Host Key Algorithms
Section titled “Host Key Algorithms”See Supported Key Types for the full list.
For host keys, ZestSSH verifies Ed25519, RSA (SHA-256 and SHA-512 signatures, plus SHA-1 ssh-rsa in compatibility mode), and ECDSA with NIST curves. Ed448 is supported as a user (identity) key type but is not offered as a host-key algorithm by default.
Encryption Algorithms
Section titled “Encryption Algorithms”See Supported Ciphers for the full list.
ZestSSH offers ChaCha20-Poly1305 (the recommended default) and AES-CTR by default, with AES-CBC added in compatibility mode. AES-GCM is implemented in the engine but is not part of the default negotiation list.
Extensions
Section titled “Extensions”| Extension | Source | Supported |
|---|---|---|
[email protected] | OpenSSH | Yes |
[email protected] | OpenSSH | Yes |
[email protected] | OpenSSH | Yes |
[email protected] | libssh | Yes |
mlkem768x25519-sha256 | OpenSSH / IETF draft (hybrid ML-KEM-768 + X25519) | Yes |
sntrup761x25519-sha512 (and @openssh.com) | OpenSSH (hybrid Streamlined NTRU Prime 761 + X25519) | Yes |
[email protected] | OpenSSH (Terrapin mitigation) | Yes |
rsa-sha2-256 | RFC 8332 | Yes |
rsa-sha2-512 | RFC 8332 | Yes |
Channel Types
Section titled “Channel Types”| Channel Type | RFC | Supported |
|---|---|---|
session | RFC 4254 | Yes |
direct-tcpip (local port forwarding) | RFC 4254 | Yes |
forwarded-tcpip (remote port forwarding) | RFC 4254 | Yes |
x11 | RFC 4254 | No |
Subsystems
Section titled “Subsystems”| Subsystem | Supported |
|---|---|
sftp | Yes |
Compression
Section titled “Compression”| Algorithm | Supported |
|---|---|
none | Yes (default) |
zlib | Yes |
[email protected] | Yes (delayed compression after auth) |
Zlib compression can be enabled per connection in the connection editor. It reduces bandwidth on slow links but adds CPU overhead.
Keep-Alive
Section titled “Keep-Alive”ZestSSH sends SSH keep-alive packets at a configurable interval to prevent idle timeout disconnects. The interval is set per connection (default: 15 seconds; a value of 0 disables keep-alive entirely).
Agent Forwarding
Section titled “Agent Forwarding”SSH agent forwarding (RFC 4254, section 6.1) is supported and can be enabled per connection. When enabled, the remote server can use the client’s SSH keys for onward authentication without the keys being stored on the remote server.
Not Supported
Section titled “Not Supported”The following SSH features are not currently supported:
- SSH 1.x protocol
- X11 forwarding
- Host-based authentication
- GSSAPI authentication
- Host certificate verification (server host keys use the TOFU known-hosts model; user certificate authentication is supported — see OpenSSH Certificates)
ssh-dss(DSA) host keys or user keys --- deprecated due to known weaknesses