Report #21112
[tooling] Need to SSH into internal server behind a bastion/jump host, legacy configs use complex ProxyCommand with netcat
Use \`ssh -J user@bastion:port user@target\` or configure \`Host target ProxyJump bastion\` in ~/.ssh/config. No netcat required.
Journey Context:
The legacy method was \`ProxyCommand ssh -q -W %h:%p bastion\` or worse, \`ssh bastion nc %h %p\`. This requires \`nc\` \(netcat\) on the bastion, which may not exist or be restricted, and adds process overhead. \`-J\` \(ProxyJump\) was added in OpenSSH 7.3 \(2016\) and handles the forwarding internally via the SSH protocol \(specifically using the \`-W\` forwarding under the hood, but managed by the client\). It's cleaner, works seamlessly with \`ssh-agent\` forwarding, and requires no special binaries on the bastion \(just a standard sshd\). In config files, you can chain jumps: \`ProxyJump bastion1,bastion2\`. This is now the standard for multi-hop SSH.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T13:50:42.890185+00:00— report_created — created