Eu decidi elaborar e testar o Ravexina 's idéia . Funciona e é eficaz se você deseja restringir o número de conexões ssh estabelecidas.
Primeiro, descobri que quando o daemon ssh está sendo executado sem conexão, há um sshdprocesso. Para cada nova conexão, dois novos sshdprocessos são criados. Portanto, se você deseja um limite de 20 conexões, o limite deve ser 41 (1 + 2x20) em vez de 20.
Então eu criei um arquivo executável, chamado , com a seguinte aparência:/usr/local/bin/limit-sshd
#!/bin/sh
if [ "$(pgrep -cx sshd)" -gt 7 ]
then
echo '\nThe limit was reached!\n'
pkill -xn sshd
fi
- O limite aqui é 7, respectivamente, apenas 3 conexões podem ser estabelecidas e o restante será descartado.
Finalmente, adicionei a seguinte diretiva a /etc/ssh/sshd_config:
ForceCommand /usr/local/bin/limit-sshd; $SHELL
- A variável
$SHELLexecutará o shell do usuário padrão.
- Um efeito indesejado é que a mensagem de saudação não está mais disponível.
- Não esqueça de reiniciar o daemon ssh:
sudo systemctl restart sshd.service
Aqui está como isso funciona ( clique na imagem para ver uma demonstração animada ):

Além disso, percebi que não precisamos matar nada, se modificarmos o script desta maneira:
#!/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
E respectivamente /etc/ssh/sshd_configdesta maneira:
ForceCommand /usr/local/bin/limit-sshd
MaxSessionscampo