He decidido elaborar y probar la Ravexina 's idea . Funciona y es efectivo si desea restringir la cantidad de conexiones ssh establecidas.
Primero descubrí que cuando el demonio ssh se está ejecutando sin ninguna conexión, hay un sshd
proceso. Para cada nueva conexión sshd
se crean dos nuevos procesos. Entonces, si desea un límite de 20 conexiones, el umbral debe ser 41 (1 + 2x20) en lugar de 20.
Luego he creado un archivo ejecutable, llamado , que se ve de la siguiente manera:/usr/local/bin/limit-sshd
#!/bin/sh
if [ "$(pgrep -cx sshd)" -gt 7 ]
then
echo '\nThe limit was reached!\n'
pkill -xn sshd
fi
- El umbral aquí es 7, respectivamente, solo se podrían establecer 3 conexiones y el resto se eliminará.
Finalmente agregué la siguiente directiva a /etc/ssh/sshd_config
:
ForceCommand /usr/local/bin/limit-sshd; $SHELL
- La variable
$SHELL
ejecutará el shell del usuario predeterminado.
- Un efecto no deseado es que el mensaje de saludo ya no está disponible.
- No olvides reiniciar el demonio ssh:
sudo systemctl restart sshd.service
Así es como funciona ( haga clic en la imagen para ver una demostración animada ):
Además, me di cuenta de que no necesitamos matar nada, si modificamos el script de esta manera:
#!/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
Y respectivamente /etc/ssh/sshd_config
de esta manera:
ForceCommand /usr/local/bin/limit-sshd
MaxSessions
campo