Ho deciso di elaborare e testare la Ravexina s' idea . Funziona ed è efficace se si desidera limitare il numero di connessioni ssh stabilite.
Innanzitutto ho scoperto che quando il demone ssh è in esecuzione senza alcuna connessione c'è un sshd
processo. Per ogni nuova connessione sshd
vengono creati due nuovi processi. Quindi, se si desidera un limite di 20 connessioni, la soglia dovrebbe essere 41 (1 + 2x20) anziché 20.
Quindi ho creato un file eseguibile, chiamato , che ha il seguente aspetto:/usr/local/bin/limit-sshd
#!/bin/sh
if [ "$(pgrep -cx sshd)" -gt 7 ]
then
echo '\nThe limit was reached!\n'
pkill -xn sshd
fi
- La soglia qui è 7, rispettivamente è possibile stabilire solo 3 connessioni e il resto verrà eliminato.
Alla fine ho aggiunto la seguente direttiva a /etc/ssh/sshd_config
:
ForceCommand /usr/local/bin/limit-sshd; $SHELL
- La variabile
$SHELL
eseguirà la shell dell'utente predefinito.
- Un effetto indesiderato è che il messaggio di saluto non è più disponibile.
- Non dimenticare di riavviare il demone ssh:
sudo systemctl restart sshd.service
Ecco come funziona ( fai clic sull'immagine per vedere una demo animata ):
Inoltre, ho capito che non abbiamo bisogno di uccidere nulla, se modifichiamo lo script in questo modo:
#!/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 rispettivamente /etc/ssh/sshd_config
in questo modo:
ForceCommand /usr/local/bin/limit-sshd
MaxSessions
campo