SSH is reachable from the internet
What this check looks for
Port 22 on ‹host› accepts connections. This is normal — it is how most servers are administered — and it is worth knowing, because it guarantees a continuous stream of automated login attempts.
Why it matters
An internet-facing SSH port is not a fault and this finding deducts nothing. What it does mean is that the machine's security rests entirely on SSH's own authentication, so it is worth confirming that password logins are off.
What it costs your score
This check never deducts. It reports a fact — or reports that something could not be verified — and is shown on the report without moving the score.
- Severity
- info
- Default confidence
- high
- Status when triggered
- info
- Deduction
- 0 points
- Family cap
- none
- Category
- Network
- Module
- Net ports
- Fix owned by
- user
- In the ruleset since
- 2026.09
How to fix it
Confirm password authentication is disabled for SSH.
Key-only authentication makes the continuous automated password guessing against this port irrelevant rather than merely survivable.
Check the effective setting:
sudo sshd -T | grep -i passwordauthentication.If it reports
yes, add your public key to~/.ssh/authorized_keysand confirm you can log in with it — in a second session, before changing anything.Set
PasswordAuthentication noandKbdInteractiveAuthentication noinsshd_config, thensudo systemctl reload sshd.Check for a drop-in file under
/etc/ssh/sshd_config.d/that re-enables it; cloud images frequently ship one.
How to confirm it worked
sudo sshd -T | grep -i passwordauthentication — expect
passwordauthentication nossh -o PreferredAuthentications=password -o PubkeyAuthentication=no ‹host› — should be refused
A named slot like ‹domain› — and the braces left in the configuration below — is filled in with your own values when this rule appears on a report.
Remediation by platform
# Check the effective configuration, not just the file — drop-ins override it.
sudo sshd -T | grep -iE 'passwordauthentication|permitrootlogin|kbdinteractive'
# /etc/ssh/sshd_config.d/99-hardening.conf
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin prohibit-password
# Verify the config parses before reloading, so a typo does not lock you out.
sudo sshd -t && sudo systemctl reload sshdKeep a second session open until you have confirmed a key login works.
sshd -tcatches a syntax error; it cannot catch having no working key.
Technical detail
A TCP connection to ‹host›:22 completed. SSH is encrypted from the first exchange, has no plaintext fallback, and is the intended way to administer a Unix machine, so an open port 22 is reported as information rather than as a defect. Presenting it as a problem would be wrong, and would train you to ignore the ports on this list that genuinely are problems.
The one thing worth checking is authentication. PasswordAuthentication no in sshd_config turns the continuous background of automated password guessing from a risk into noise, because there is no password to guess. Key-based authentication is the default on most current distributions and on every major cloud image, so on many machines this is already true — confirm it rather than assume it.
Two things often suggested here are worth being honest about. Moving SSH to a non-standard port reduces log volume and nothing else; the scanners that matter scan every port. Blocking repeated failures with fail2ban is useful against noise and is not a substitute for disabling password authentication.
If the machine does not need to be administered from arbitrary addresses, restricting port 22 to a VPN or a bastion is a genuine improvement — but it is an improvement over something already reasonable, not a fix for something broken.
Standards and references
Test this on your domain
Run the check that produces this finding, on its own, against any domain.