In vielen Konfigurationsbeispielen für die sshd_config, der Konfigurationsdatei für den ssh-Dämon, wird mit der AllowUsers-Direktive explizit festgelegt, mit welchen Benutzernamen (und damit Benutzern) man sich überhaupt anmelden darf. Kombiniert mit @HOST gilt der Login eines Benutzers dann sogar nur für den angegebenen Host.
AllowUsers foo bar baz@192.168.1.100
Loginversuche von Unbefugten mit dort nicht aufgeführten Benutzerkonten lassen sich damit, dank eindeutiger Fehlermeldung im Logfile, noch einfacher mit Tools wie fail2ban aufspüren.
sshd[9140]: User system from host.example.com not allowed because not listed in AllowUsers
Hat man den Login so konfiguriert, dass nur das Public-Key-Verfahren erlaubt ist und muss einem Benutzerkonto trotzdem den Login mit Passwort erlauben, kann man sich mit konditionalen Blöcken behelfen, die man mit der Match-Direktive einleitet.
An das Ende der sshd_config kann man beispielsweise ergänzen:
Match Address 192.168.1.100 User bolo AllowUsers bolo PasswordAuthentication yes
Hier werden zwei Kriterien geprüft, nämlich ob der Login von einer bestimmten IP-Adresse aus erfolgt („Address 192.168.1.100“) und ob es der zu erlaubende Benutzer ist („User bolo“). Wenn ja, wird diesem Benutzer explizit auch der Login („AllowUsers bolo“) und die Anmeldung via Passwort erlaubt („PasswordAuthentication yes“). Die im konditionalen Block gelisteten Einstellungen überschreiben die globalen.
Genauso gut kann man also auch schreiben:
# in der "globalen" AllowUsers Liste AllowUsers foo bar baz@192.168.1.100 bolo@192.168.1.100 PasswordAuthentication no PubkeyAuthentication yes PermitEmptyPasswords no Match User bolo PasswordAuthentication yes