Ben ayrıntılı ve test etmeye karar verdik Ravexina 'ın fikrini . Çalışır ve kurulan ssh bağlantılarının sayısını kısıtlamak istiyorsanız etkilidir.
İlk olarak ssh arka plan programı herhangi bir bağlantı olmadan çalışırken buldum bir sshdişlem var. Her yeni bağlantı için iki yeni sshdişlem oluşturulur. Dolayısıyla 20 bağlantı sınırı istiyorsanız eşik 20 yerine 41 (1 + 2x20) olmalıdır .
Sonra , aşağıdaki gibi görünen, yürütülebilir bir dosya oluşturdum :/usr/local/bin/limit-sshd
#!/bin/sh
if [ "$(pgrep -cx sshd)" -gt 7 ]
then
echo '\nThe limit was reached!\n'
pkill -xn sshd
fi
- Buradaki eşik 7'dir, sırasıyla sadece 3 bağlantı kurulabilir ve geri kalanı kesilecektir.
Sonunda aşağıdaki yönergeyi ekledim /etc/ssh/sshd_config:
ForceCommand /usr/local/bin/limit-sshd; $SHELL
- Değişken
$SHELL, varsayılan kullanıcının kabuğunu yürütür.
- İstenmeyen bir etki, karşılama iletisinin artık kullanılamamasıdır.
- Ssh arka plan programını yeniden başlatmayı unutmayın:
sudo systemctl restart sshd.service
İşte böyle çalışır ( animasyonlu bir demo görmek için resme tıklayın ):

Ayrıca, betiği bu şekilde değiştirirsek, hiçbir şeyi öldürmemize gerek olmadığını fark ettim:
#!/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
Sırasıyla /etc/ssh/sshd_configbu şekilde:
ForceCommand /usr/local/bin/limit-sshd
MaxSessionsalanında