Skip to content
Oznog

4.18 · network and edge · as-is

An SSH security default that pages as a network outage

date
20260821
what happened
Modern OpenSSH servers block a source address, with an escalating timeout, after a small number of failed authentication attempts from it. While building the external monitoring vantage point on 20260821, two failed key-based connection attempts from one machine triggered this on the target host, and every subsequent attempt from that source failed for several minutes with a connection timeout.
what it cost
Time spent suspecting a cloud provider's own firewall rules and then a routing problem, before the actual cause, the target host's own SSH server blocking the source, was identified.
what changed
A fast check was documented: query the SSH server's own effective configuration for whether the per-source penalty feature is active and what its thresholds are, rather than assuming a timeout means a network-layer problem.
the check now
Read the target host's effective SSH server configuration for the per-source penalty settings before spending time on routing or firewall theories, or simply retry from a different source address to see whether the block is source-specific.

The trap here is how convincingly the symptom mimics an unrelated class of problem. A security feature, on by default in current OpenSSH and therefore on most current Linux distributions, blocks a source address for a period of time after a small number of failed login attempts. The client sees “connection timed out”, which gives no hint at all that this is what happened. It reads exactly like a firewall rule, a routing problem, or a host that is simply not there.

Every instinct points outward, which is the expensive part. On 20260821 the first suspects were the cloud provider’s own firewall and then the path between the two machines, both entirely reasonable theories for a connection that used to work and now times out. Neither could be confirmed or ruled out quickly, which is a second tell. When a theory cannot be falsified with the tools at hand, it is worth pausing to ask whether a cheaper theory exists.

The cheaper theory in this case takes seconds to test. The SSH server can print its own effective configuration, including whether the penalty feature is enabled and what the thresholds are, and a retry from any other source address settles it immediately, because the block is per source. Two failed key attempts is a low bar to clear accidentally, particularly while building a new host and trying several keys in a row.

The value of writing this down is entirely in the symptom-to-cause mapping being available before the next person burns twenty minutes on the wrong theory, which is exactly what happened here on a day that had no other reason to suspect the target host itself.

Source: node0 lessons v0.1, lesson 4.18. Sanitized: checklist v0.1, 20260921; names pass only; voice pass 20260921. Part of oznog.com/node0.