Sisteminizi kapattığınızda veya yeniden başlattığınızda, systemd
tüm hizmetleri olabildiğince hızlı durdurmaya çalışır. Bu, ağı düşürmeyi ve hala hayatta olan tüm süreçleri - genellikle bu sırayla - sonlandırmayı içerir. Bu nedenle systemd, SSH oturumlarınızı işleyen çatallı SSH işlemlerini öldürdüğünde, ağ bağlantısı zaten devre dışıdır ve istemci bağlantısını zarif bir şekilde kapatmanın bir yolu yoktur.
İlk düşünceniz, kapatma sırasında ilk adım olarak tüm SSH işlemlerini öldürmek olabilir ve orada bunu yapan birkaç sistemd hizmet dosyası vardır.
Ama elbette daha temiz bir çözüm var (nasıl yapılması gerekiyordu) systemd-logind
.
systemd-logind
etkin kullanıcı oturumlarını (yerel ve SSH olanlar) izler ve bunlar içinde oluşan tüm işlemleri "dilimler" olarak adlandırır. Bu şekilde, sistem kapatıldığında, systemd kullanıcı dilimleri içindeki her şeyi SIGTERM (belirli bir oturumu gerçekleştiren çatallı SSH işlemini içerir) ve sonra hizmetleri ve ağı kapatmaya devam edebilir.
systemd-logind
yeni kullanıcı oturumlarından haberdar olmak için bir PAM modülü gerektirir ve durumunu kontrol etmek dbus
için kullanmanız gerekir loginctl
, bu nedenle her ikisini de yükleyin:
apt-get install libpam-systemd dbus
/etc/ssh/sshd_config
Aslında modülü kullanacağınızdan emin olun UsePAM yes
.