Zdecydowałem się opracować i przetestować Ravexina „s pomysł . Działa i jest skuteczny, jeśli chcesz w ogóle ograniczyć liczbę ustanowionych połączeń ssh.
Najpierw odkryłem, że gdy demon ssh działa bez połączenia, istnieje jeden sshdproces. Dla każdego nowego połączenia sshdtworzone są dwa nowe procesy. Więc jeśli chcesz limit 20 połączeń, próg powinien wynosić 41 (1 + 2x20) zamiast 20.
Następnie utworzyłem plik wykonywalny o nazwie , który wygląda następująco:/usr/local/bin/limit-sshd
#!/bin/sh
if [ "$(pgrep -cx sshd)" -gt 7 ]
then
echo '\nThe limit was reached!\n'
pkill -xn sshd
fi
- Tutaj próg wynosi 7, odpowiednio można ustanowić tylko 3 połączenia, a reszta zostanie zerwana.
Wreszcie dodałem następującą dyrektywę do /etc/ssh/sshd_config:
ForceCommand /usr/local/bin/limit-sshd; $SHELL
- Zmienna
$SHELLwykona domyślną powłokę użytkownika.
- Niepożądanym efektem jest to, że powitanie nie jest już dostępne.
- Nie zapomnij zrestartować demona ssh:
sudo systemctl restart sshd.service
Oto jak to działa ( kliknij obraz, aby zobaczyć animowaną wersję demonstracyjną ):

Ponadto zdałem sobie sprawę, że nie musimy niczego zabijać, jeśli zmodyfikujemy skrypt w ten sposób:
#!/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
I odpowiednio /etc/ssh/sshd_configw ten sposób:
ForceCommand /usr/local/bin/limit-sshd
MaxSessionsterenie