जब आप अपने सिस्टम को शटडाउन या रिबूट करते हैं, systemd
तो जितनी जल्दी हो सके सभी सेवाओं को रोकने की कोशिश करता है। इसमें नेटवर्क को नीचे लाना और सभी प्रक्रियाओं को समाप्त करना शामिल है जो अभी भी जीवित हैं - आमतौर पर उस क्रम में। इसलिए जब systemd आपके SSH सत्रों को संभालने वाली कांटेदार SSH प्रक्रियाओं को मारता है, तो नेटवर्क कनेक्शन पहले से ही अक्षम है और उनके पास ग्राहक कनेक्शन को इनायत से बंद करने का कोई तरीका नहीं है।
आपका पहला विचार शटडाउन के दौरान पहले चरण के रूप में सभी SSH प्रक्रियाओं को मारने का हो सकता है, और वहाँ बहुत सी systemd सेवा फाइलें हैं जो बस ऐसा ही करती हैं।
लेकिन निश्चित रूप से एक निरर्थक समाधान है (यह कैसे किया जाना चाहिए "माना जाता है) systemd-logind
:।
systemd-logind
सक्रिय उपयोगकर्ता सत्रों (स्थानीय और एसएसएच वाले) का ट्रैक रखता है और तथाकथित "स्लाइस" के लिए उनके भीतर स्पॉन की गई सभी प्रक्रियाओं को असाइन करता है। इस तरह से, जब सिस्टम बंद हो जाता है, तो सिस्टम स्लाटर को उपयोगकर्ता स्लाइस के अंदर सब कुछ (जिसमें एक विशेष सत्र सौंपने वाली कांटे वाली SSH प्रक्रिया शामिल है) बस SIGTERM कर सकता है और फिर सेवाओं और नेटवर्क को बंद करना जारी रख सकता है।
systemd-logind
नए उपयोगकर्ता सत्रों की सूचना पाने के लिए PAM मॉड्यूल की आवश्यकता होती है और आपको इसकी स्थिति की जांच करने के dbus
लिए उपयोग loginctl
करने की आवश्यकता होगी , इसलिए उन दोनों को स्थापित करें:
apt-get install libpam-systemd dbus
सुनिश्चित करें कि आपका /etc/ssh/sshd_config
वास्तव में मॉड्यूल का उपयोग करने जा रहा है UsePAM yes
।