Я вирішив розробити і протестувати Ravexina «s ідеї . Він працює, і він ефективний, якщо ви хочете взагалі обмежити кількість встановлених ssh-з'єднань.
По-перше, я виявив, коли демон ssh працює без будь-якого з'єднання, є один sshdпроцес. Для кожного нового з'єднання sshdстворюються два нові процеси. Тож якщо ви хочете обмежити 20 підключень, поріг повинен бути 41 (1 + 2x20) замість 20.
Тоді я створив виконуваний файл з назвою , який виглядає так:/usr/local/bin/limit-sshd
#!/bin/sh
if [ "$(pgrep -cx sshd)" -gt 7 ]
then
echo '\nThe limit was reached!\n'
pkill -xn sshd
fi
- Поріг тут становить 7, відповідно лише 3 з'єднання можуть бути встановлені, а решта буде відхилена.
Нарешті я додав таку директиву до /etc/ssh/sshd_config:
ForceCommand /usr/local/bin/limit-sshd; $SHELL
- Змінна
$SHELLвиконає оболонку користувача за замовчуванням.
- Небажаний ефект полягає в тому, що вітальне повідомлення більше не доступне.
- Не забудьте перезапустити ssh-демон:
sudo systemctl restart sshd.service
Ось як це працює ( натисніть на зображення, щоб побачити анімаційну демонстрацію ):

Далі я зрозумів, що нам не потрібно нічого вбивати, якщо ми модифікуємо сценарій таким чином:
#!/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
І відповідно /etc/ssh/sshd_configтаким чином:
ForceCommand /usr/local/bin/limit-sshd
MaxSessionsполі