Wie kann ich die SSH-Kennwortauthentifizierung nur für bestimmte IP-Adressen zulassen?

103

Ich möchte die SSH-Kennwortauthentifizierung nur für ein bestimmtes Subnetz zulassen. Ich sehe die Option, es global zu verbieten, in /etc/ssh/sshd_config:

# Change to no to disable tunnelled clear text passwords
#PasswordAuthentication yes

Gibt es eine Möglichkeit, diese Konfiguration auf einen ausgewählten Bereich von IP-Adressen anzuwenden?

ændrük
quelle

Antworten:

156

Benutze einen MatchBlock am Ende von /etc/ssh/sshd_config:

# Global settings
…
PasswordAuthentication no
…

# Settings that override the global settings for matching IP addresses only
Match address 192.0.2.0/24
    PasswordAuthentication yes

Dann teilen Sie dem sshd-Dienst mit, dass er seine Konfiguration neu laden soll:

service ssh reload
Gilles
quelle
1
Ich habe es versucht (mit 192.168.0.0/16 stattdessen) und als ich den SSH-Dienst neu startete, wurde ich ausgesperrt. SSH lehnte alle Verbindungen ab. Irgendeine Idee, warum das sein könnte?
Michael Waterfall
2
@MichaelWaterfall Es ist unmöglich, mit so wenig Informationen zu sagen. Stellen Sie sicher, dass eine Shell ausgeführt wird, bis Sie die neue Konfiguration validiert haben. Das Neustarten des SSH-Dienstes wirkt sich nicht auf aktive Verbindungen aus.
Gilles
28
Das wahrscheinlichste Problem ist, dass Sie den Match-Block in die Mitte Ihrer sshd_config setzen. Übereinstimmungszeilen wirken sich auf alle folgenden Zeilen bis zur nächsten Übereinstimmungszeile aus. Sie sollten sich also am Ende der Datei befinden.
Ken Simon
6
Trotz der Einrückung in der Antwort sshd_configist nicht Python;)
Nick T
1
@frepie Der MatchBlock erstreckt sich bis zur nächsten MatchAnweisung oder bis zum Ende der Datei. Deshalb muss man es am Ende setzen.
Gilles
8

Du kannst hinzufügen:

AllowUsers [email protected].*.*, [email protected].*.*

Dies ändert das Standardverhalten und lehnt alle anderen Benutzer von allen Hosts ab. Matchblock verfügbar ab OpenSsh Version 5.1 .

Glooch
quelle
Ich erlaube einer Gruppe anstelle eines einzelnen Benutzers
Lamar
@Lamar From man sshd_config, es sieht so aus , als würde es AllowGroupsgenauso funktionieren AllowUsers, AllowUsersscheint aber Vorrang zu haben AllowGroups.
conradkdotcom