종료 명령을 보낸 후 ssh 세션이 종료되지 않습니다


12

데비안 서버를 끄거나 다시 시작하라는 명령을 보낼 때마다, 쉘은 멈추고 응답하지 않습니다 (명령을 입력 할 수 없습니다).

여기에 이미지 설명을 입력하십시오

우분투에서 동일한 작업을 수행하면 세션이 정상적으로 종료되므로 연결된 터미널이 남아 있지 않습니다. 데비안에서 이와 동일한 동작을 수행 할 수 있도록 설치해야 할 패키지 또는 구성 변경이 있습니까?


sudo shutdown -h now(전원 끄기) 및 / 또는 sudo reboot(다시 시작하기)에 동일한 동작이 발생 합니까?
eyoung100

네, 그것도 마찬가지입니다.
Programster

2
NB <enter>, 물결표 및 마침표 (~.)를 입력하여 이러한 중단 된 ssh 세션 중 하나를 종료 할 수 있습니다.
Kenster

답변:


11

이것은 나를 위해 일했다 :

apt-get install libpam-systemd dbus

또한 UsePAM yesssh 구성에 있는지 확인하십시오 .

grep -i UsePAM /etc/ssh/sshd_config

불행히도 솔루션을 적용하려면 재부팅해야합니다 ...

serverfault에 대한 자세한 설명 .


우분투 16.04에서 이전 솔루션이 작동하지 않는 동일한 문제가 있었지만이 솔루션은 작동했습니다.
Programster

7

그런 외모는 A의 systemd현재에서 추적 문제 버그 # 751636 .

호스트가 종료되거나 다시 시작되면 systemdssh 세션을 종료하기 전에 네트워크가 종료 될 수 있습니다.

제공되는 몇 가지 솔루션이 있지만 구체적인 것은 없습니다.

  1. 사용 acpid/acpi-support-base전원 이벤트를 처리 및에 다음을 추가/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
    

    다음에 별칭을 만드십시오 ~/.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다음과 같이 작성 하십시오.

    [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
    

알려진 버그를 아는 것이 좋습니다. 두 번째 해결책을 시도했지만 재부팅 명령을 보낼 때 작동하지 않는 것 같습니다. 나는 그것을 실행 가능하게 만들었습니다.
Programster

1
systemd 데몬 :을 다시로드하십시오. systemctl daemon-reload또한 systemd 서비스를 즉시 활성화하고 systemctl start ssh-user-sessions.service부팅시 서비스를 활성화합니다.systemctl enable ssh-user-sessions.service
neuron

처음 2 개의 명령을 실행하면 트릭을 얻었습니다. 세 번째 명령을 실행하면 다음과 같은 결과가 발생 The unit files have no [Install] section. They are not meant to be enabled using systemctl.하지만 필요하지 않은 것 같습니다.
Programster

예, 유닛 파일에는 "[Install]"유닛에 대한 설치 정보가 담긴 섹션 이 포함될 수 있습니다 . 이 섹션은 systemd런타임 중에 해석되지 않습니다 . 장치를 설치하는 동안 도구 의 enabledisable 명령 에서만 사용됩니다 systemctl.
뉴런

파일 에 [Install]이어 WantedBy=multi-user.target파일을 추가 했는데 systemctl enable ssh-user-sessions.service오류가 발생하지 않아서 다시 부팅 할 때 서비스가 적용됩니다. 이 작업에 문제가 있습니까?
Programster
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.