I encountered a strange issue when SSH-ing to a machine on my local network.
SSH would connect, authenticate, then hang indefinitely. Yet sending non-interactive commands worked as normal.
I tried to establish whether the problem was my machine or the network:
- Connecting from a docker container on my machine: hang
- Connecting via an intermediary server with agent forwarding: hang
- Connecting via an intermediary server, no agent: success!
Comparing the logs with -vvv
the only significant different was this:
-debug3: ssh_packet_set_tos: set IP_TOS 0×08
+debug3: ssh_packet_set_tos: set IP_TOS 0×20
For some reason the connection from my host was using 0×08
throughput whereas the other was using 0×20
DSCP_CS1*. These parameters are set server-side to optimise TCP for low latency/high throughput dependent on the nature of the connection.
The workaround hack was the one described here, where the server’s configured to use a specific QoS value. I tried 0×00
as described and it worked, though 0×20
as used by the jump server also works.
I’m blaming this on my Sky broadband router auto-updating and breaking QoS support.
* DSCP refers to Differentiated Services Class Selector, a bit in the IPv4 header.