मैंने रवेक्सिना के विचार को विस्तृत और परखने का फैसला किया है । यह काम करता है और यह प्रभावी है यदि आप सभी स्थापित ssh कनेक्शन की संख्या को प्रतिबंधित करना चाहते हैं।
पहले मैंने पाया कि जब ssh डेमन बिना किसी कनेक्शन के चल रहा है तो एक sshd
प्रक्रिया है। प्रत्येक नए कनेक्शन के लिए दो नई sshd
प्रक्रियाएं बनाई जाती हैं। इसलिए यदि आप 20 कनेक्शन की सीमा चाहते हैं, तो सीमा 20 की बजाय 41 (1 + 2x20) होनी चाहिए ।
फिर मैंने एक निष्पादन योग्य फ़ाइल बनाई है, जिसका नाम है , जो इस प्रकार है:/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
क्षेत्र में सर्वर पर 20 से ssh में अधिकतम संख्या कनेक्शन की अनुमति दें