Ist es möglich, dass sshd Passwörter nur an bestimmten Ports akzeptiert?

24

Ich weiß, dass es möglich ist, sshdmehrere Ports mit mehreren PortDirektiven abzuhören . Ist es jedoch möglich, die Einstellungen pro Port unabhängig voneinander anzupassen? Ist es insbesondere möglich, dass ein Port die Kennwortauthentifizierung zulässt, ein anderer Port dies jedoch nicht zulässt?

Laurence Gonsalves
quelle
1
Übrigens: Der Grund, warum ich das mache, ist, dass ich Passwörter in meinem LAN zulassen möchte, aber nicht aus dem WAN. Meine WAN-Firewall ermöglicht nur die Verbindung mit dem restriktiveren Port.
Laurence Gonsalves
1
Siehe auch Einschränkung nach IP-Adresse (n), wenn Sie die Standard-Portnummer verwenden möchten.
ændrük

Antworten:

32

Dies kann mit der MatchDirektive erreicht werden.

In /etc/sshd_config, deklarieren Sie mehrere Ports:

Port 22
Port 2222

Fügen Sie dann ganz am Ende der Datei Folgendes hinzu:

Match LocalPort 2222
PasswordAuthentication no

Alle Einstellungen werden von den Ports gemeinsam genutzt, außer dass die Kennwortauthentifizierung an Port 2222 deaktiviert wird.

Laurence Gonsalves
quelle
+1 Sehr interessant
Carlos Campderrós
Schade, Matchfunktioniert nicht mit AllowUsers. Wenn Sie Benutzer für einen bestimmten Port einschränken müssen, müssen Sie wahrscheinlich mehrere sshdInstanzen ausführen.
Bob
0

Ein einzelner sshdProzess, glaube ich nicht, aber es sollte ziemlich einfach sein, eine zweite Konfigurationsdatei einzurichten und zwei sshdListener auszuführen , einen für die Passwort-Ports und einen für die Nicht-Passwort-Ports.

John
quelle
3
Ich fand, dass es tatsächlich eine Möglichkeit gibt, dies mit einer einzelnen Instanz von sshd zu tun. Siehe die Antwort, die ich gepostet habe. Danke trotzdem.
Laurence Gonsalves