Kapatma komutu gönderildikten sonra ssh oturumu sona ermiyor


12

Debian sunucularımı kapatmak veya yeniden başlatmak için her komut gönderdiğimde, kabuğum asılı ve yanıt vermiyor (komut yazamıyor).

resim açıklamasını buraya girin

Ubuntu'da aynı eylemi gerçekleştirmek, oturumun başarıyla kapatılmasıyla sonuçlanır, böylece orada asılı bir bağlı terminalim kalmaz. Debian'da aynı davranışı alabilmem için kurmam gereken bir paket veya yapılandırma değişikliği yapılacak mı?


sudo shutdown -h now(Poweroff için) ve / veya sudo reboot(yeniden başlatma için ) ile aynı davranış ortaya çıkıyor mu?
eyoung100

evet, bunlarla da olur.
Programcı

2
Not <enter>, tilde ve period (~.) Yazarak bu asılı ssh oturumlarından birini öldürebilirsiniz.
Kenster

Yanıtlar:


11

Bu benim için çalıştı:

apt-get install libpam-systemd dbus

Ayrıca UsePAM yesssh config'inizde olduğundan emin olun .

grep -i UsePAM /etc/ssh/sshd_config

Ne yazık ki, çözümün etkili olması için yeniden başlatmanız gerekiyor ...

İlişkin ayrıntılı açıklama ServerFault .


Ben sadece önceki çözüm işe yaramadı ubuntu 16.04 aynı sorunu vardı ama bu bir işe yaradı.
Programcı

7

Görünüşe göre systemdşu anda 751636 numaralı hata altında izlenen bir sorun .

Ana bilgisayar kapatıldığında veya yeniden başlatıldığında, systemdssh oturumunu öldürmeden önce ağı kapatabilir.

Sağlanan birkaç çözüm var ama somut bir şey yok:

  1. Kullanımı acpid/acpi-support-basegüç olayları ele & için aşağıdaki eklemek için/etc/acpi/powerbtn-acpi-support.sh

    else
    -       # Normal handling.
    -       /sbin/shutdown -h -P now "Power button pressed"
    +
    +       if [ -x /bin/systemctl ] ; then
    +           echo "\nPower button pressed\nThe system is going down for system halt NOW!" |\
    +            /usr/bin/wall -n
    +           /bin/systemctl --force poweroff
    +       else
    +           # Normal handling.
    +           /sbin/shutdown -h -P now "Power button pressed"
    +       fi
    +
    fi
    

    ve sonra da takma adlar oluşturun ~/.bashrc:

    alias reboot='echo "The system is going down for system reboot NOW!" |\
    /usr/bin/wall -n ; /bin/systemctl --force reboot'
    
    alias poweroff='echo "The system is going down for system halt NOW!" |\
    /usr/bin/wall -n ; /bin/systemctl --force poweroff'
    
  2. /etc/systemd/system/ssh-user-sessions.serviceİçinde aşağıdakilerle oluşturma :

    [Unit]
    Description=Shutdown all ssh sessions before network
    After=network.target
    
    [Service]
    TimeoutStartSec=0
    Type=oneshot
    RemainAfterExit=yes
    ExecStart=/bin/true
    ExecStop=/usr/bin/killall sshd
    

onun hakkında bilinen bir hata olduğunu bilmek güzel. İkinci çözümü denedim, ancak yeniden başlatma komutunu gönderirken benim için çalışmıyor gibi görünüyor. Çalıştırılabilir olduğundan emin oldum.
Programcı

1
Systemd daemon'u yeniden yükleyin:, systemctl daemon-reloadayrıca systemd servisini hemen systemctl start ssh-user-sessions.serviceetkinleştirmek için : ve bootup'da hizmeti etkinleştirmek içinsystemctl enable ssh-user-sessions.service
nöron

İlk 2 kumandayı çalıştırmak hile yaptı. Üçüncü komutu çalıştırmak sonuçlandı: The unit files have no [Install] section. They are not meant to be enabled using systemctl.ancak gerekli görünmüyor.
Programcı

Evet, Birim dosyasının "[Install]"birim için kurulum bilgilerini taşıyan bir bölüm içerebileceğini unutmayı unutmayın . Bu bölüm systemdçalışma zamanı sırasında yorumlanmaz . Birimin kurulumu sırasında sadece aletin etkinleştirme ve devre dışı bırakma komutları tarafından kullanılır systemctl.
nöron

Ben ekledi [Install]izledi WantedBy=multi-user.targetsonuçlandı dosyaya systemctl enable ssh-user-sessions.serviceyeniden doğmuş genelinde hizmet alma etkisinde bir hata ve sonuçları atma değil. Bunu yaparken yanlış bir şey var mı?
Programcı
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.