OpenSSH: So beenden Sie einen Matchblock

49

Ich benutze einen MatchBlock in OpenSSH /etc/ssh/sshd_config(unter Debian), um einige Benutzer auf SFTP zu beschränken:

# my stuff
Match group sftponly
    X11Forwarding no
    AllowTcpForwarding no
    ForceCommand internal-sftp -u 0002
    ChrootDirectory %h

Wie Sie sehen können, benutze ich einen #my stuffKommentar in benutzerdefinierten Konfigurationsdateien, um die Standardkonfigurationen leicht von den von mir vorgenommenen zu unterscheiden (und diese am Ende der Konfigurationsdateien zu platzieren).
Jetzt wollte ich die Direktive UseDNS noan die Konfiguration anhängen (um die Anmeldung zu beschleunigen), aber OpenSSH sagte Directive 'UseDNS' is not allowed within a Match block.

Jetzt habe ich mich gefragt, ob es eine Syntax End Matchzum Beenden dieser Matchblöcke gibt ?

mreithub
quelle

Antworten:

30

Verwenden Sie die folgende Zeile, um einen Übereinstimmungsblock mit openssh 6.5p1 oder höher zu erstellen: Match all

Hier ist ein Stück Code aus meiner /etc/ssh/sshd_configDatei:

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

Match host 192.168.1.12
    PasswordAuthentication yes
Match all

X11Forwarding yes
X11DisplayOffset 10

Eine Linie mit einer Sohle Matchwird nicht funktionieren. (Es hat bei mir nicht funktioniert, sshd weigerte sich zu starten)

loxaxs
quelle
2
Cool, ich habe es gerade ausprobiert und es scheint wie erwartet zu funktionieren (ich könnte sogar die UseDNSDirektive verwenden (die vorher nicht funktioniert hat). Dies als neue Antwort akzeptieren. - Neuere OpenSSH-Versionen werden anscheinend nicht einmal funktionieren Beginnen Sie mit einem leeren Match: lists.mindrot.org/pipermail/openssh-unix-dev/2014-April/…
mreithub
42

Es scheint keine Möglichkeit zu geben, Match-Blöcke explizit zu beenden. Von der Manpage sshd_config :

Wenn alle Kriterien in der Übereinstimmungszeile erfüllt sind, überschreiben die Schlüsselwörter in den folgenden Zeilen die im globalen Abschnitt der Konfigurationsdatei festgelegten, bis entweder eine andere Übereinstimmungszeile oder das Ende der Datei.

So Matchmüssen Blöcke am Ende der zu sshd_configDatei.

mreithub
quelle
7
Eine andere Möglichkeit ist, eine Zeile mit nichts als darauf Matchzu haben, die effektiv zu allem passt und daher das gleiche ist wie das 'Beenden' des Blocks. Auf diese Weise können Sie jedoch keine Direktiven verwenden, die in Match-Blöcken nicht zulässig sind, sodass dies in Ihrem speziellen Szenario nicht hilfreich ist.
Nathan Bouscal
4
Msgstr "Übereinstimmungsblöcke müssen am Ende der sshd_config - Datei stehen." Sehr hilfreich für mich und nicht klar genug erklärt (für mich) in der Manpage usw. Danke.
MountainX
0

Ich denke, wir sollten den Matchund HostSchlüssel gleichzeitig erwähnen .

Host

Beschränkt die folgenden Deklarationen (bis zum nächsten Hostoder MatchSchlüsselwort) auf diejenigen Hosts, die mit einem der nach dem Schlüsselwort angegebenen Muster übereinstimmen.

Match

Beschränkt die folgenden Deklarationen (bis zum nächsten Hostoder MatchSchlüsselwort) auf die Verwendung, wenn die Bedingungen nach dem Schlüsselwort Match erfüllt sind.

Das Lesen des Handbuchs von man ssh_config, both Host *und Match allsetzt den vorherigen Beschränkungsblock zurück, unabhängig davon, ob es sich um einen MatchBlock oder einen HostBlock handelt.

Simba
quelle