SSH has no Host header
Motivation vs. Simpler Alternatives
- Many ask why not just give each VM a distinct IP and/or port.
- Proponents of the described design emphasize:
- IPv4 scarcity and cost; IP-per-VM is too expensive.
- Desire for “ssh hostname” to match the web hostname with no extra flags.
- “Zero-config” UX for developers, especially in corporate environments where only port 22 is reliably allowed.
- Critics argue port-based routing or a simple jump host/ProxyJump would be easier, more standard, and avoid complex key-based routing logic.
SSH Protocol Limitations & Workarounds
- Core issue: SSH lacks a Host/SNI-like field to multiplex multiple backends on one IP:port.
- Suggested workarounds:
- Nonstandard ports combined with SRV records (not widely supported by SSH clients).
- ProxyCommand/ProxyJump plus wildcards in ssh config.
- Username-encoded routing (e.g., user+host@domain).
- Port knocking and NAT rules per user.
- Several note that “zero config” just pushes complexity onto the service operator.
Security, Host Keys, and Identity Leakage
- Concern: all VMs behind the proxy appear to share the same host key, effectively enabling full MITM by the provider and possibly weakening host key pinning.
- Some expect users will be told to disable host key checking for ephemeral instances, further weakening security.
- Separate thread: SSH clients may present multiple public keys to a server, allowing correlation of identities across services; advice includes using different keys per host and restrictive ssh configs.
- SSH certificates and CAs are mentioned as an underused but powerful mechanism for scoping and managing access.
IPv4 vs IPv6 and Network Reality
- Some argue the “real” solution is IPv6 and/or charging extra for dedicated IPv4.
- Others counter that many ISPs and corporate networks still lack reliable IPv6, so IPv4-only compatibility remains essential.
- NAT, CGNAT, and lack of IPv6 are seen as practical blockers to “v6-only” deployments despite ideological support for IPv6.
Broader Reflections
- Several see this as a pure Developer Experience optimization, similar in spirit to GitHub’s SSH UX.
- Others question whether SSH itself is even necessary for such services, suggesting richer control panels instead, though this is contested.