Ich habe beschlossen , die erarbeiten und testen Ravexina ‚s Idee . Es funktioniert und ist effektiv, wenn Sie die Anzahl der eingerichteten SSH-Verbindungen einschränken möchten.
Zuerst habe ich festgestellt, dass es einen sshdProzess gibt, wenn der ssh-Daemon ohne Verbindung ausgeführt wird . Für jede neue Verbindung werden zwei neue sshdProzesse erstellt. Wenn Sie also ein Limit von 20 Verbindungen wünschen, sollte der Schwellenwert 41 (1 + 2x20) anstelle von 20 sein.
Dann habe ich eine ausführbare Datei mit dem Namen erstellt , die wie folgt aussieht:/usr/local/bin/limit-sshd
#!/bin/sh
if [ "$(pgrep -cx sshd)" -gt 7 ]
then
echo '\nThe limit was reached!\n'
pkill -xn sshd
fi
- Die Schwelle liegt hier bei 7, bzw. es konnten nur 3 Verbindungen hergestellt werden und der Rest wird fallengelassen.
Schließlich habe ich die folgende Direktive hinzugefügt /etc/ssh/sshd_config:
ForceCommand /usr/local/bin/limit-sshd; $SHELL
- Die Variable
$SHELLführt die Shell des Standardbenutzers aus.
- Ein unerwünschter Effekt ist, dass die Begrüßungsnachricht nicht mehr verfügbar ist.
- Vergessen Sie nicht, den ssh-Daemon neu zu starten:
sudo systemctl restart sshd.service
So funktioniert das ( klicken Sie auf das Bild, um eine animierte Demo zu sehen ):

Außerdem wurde mir klar, dass wir nichts töten müssen, wenn wir das Skript auf diese Weise ändern:
#!/bin/sh
if [ "$(pgrep -cx sshd)" -gt 7 ]
then
echo '\nThe limit was reached!\n'
exit # This line is not mandatory
else
eval "$SHELL"
fi
Und jeweils /etc/ssh/sshd_configauf diese Weise:
ForceCommand /usr/local/bin/limit-sshd
MaxSessionsFeld zugreifen dürfen, auf 20 ein