ฉันได้ตัดสินใจที่จะทำอย่างละเอียดและทดสอบRavexinaของความคิด มันใช้งานได้และจะมีประสิทธิภาพถ้าคุณต้องการ จำกัด จำนวนการเชื่อมต่อ ssh ที่กำหนดไว้เลย
ครั้งแรกที่ฉันพบเมื่อ ssh daemon ทำงานโดยไม่มีการเชื่อมต่อใด ๆ มีsshd
กระบวนการหนึ่ง สำหรับการเชื่อมต่อใหม่แต่ละsshd
กระบวนการจะมีการสร้างกระบวนการใหม่สองกระบวนการ ดังนั้นหากคุณต้องการ จำกัด การเชื่อมต่อ 20 ขีด จำกัด ควรเป็น41 (1 + 2x20) แทนที่จะเป็น 20
จากนั้นฉันสร้างไฟล์เรียกทำงานที่มีชื่อซึ่งมีลักษณะดังนี้:/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 daemon:
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
ฟิลด์