SSHD를 중지하고 진행 중인 연결을 종료합니다.

SSHD를 중지하고 진행 중인 연결을 종료합니다.

sshd 데몬을 중지하고 싶은 상황이 있습니다. 이 작업을 수행하면 현재 열려 있는 연결도 중지되기를 원합니다. 기본적으로 sshd 서비스가 중지되어도 기존 연결은 종료되지 않습니다.

이것이 구성 가능합니까? sshd가 중지될 때마다 열려 있는 연결도 중지되도록 설정할 수 있습니까?

대안은 무엇입니까? 간단히 killall sshd?

답변1

실제로 sshd 서비스는 종료 시 활성 세션을 닫지 않습니다.

sshd를 사용하면 killall sshd자체 sshd 서버도 종료됩니다. 원격 스테이션에서 작업하는 것은 위험할 수 있지만 서버가 중지되어도 큰 문제는 아닙니다.

이를 방지하기 위해 먼저 클라이언트에 바인딩된 sshd 인스턴스의 PID를 찾습니다.

# who am i
root     pts/0        2019-10-25 13:52 (1.2.3.4)
# ps fxww|grep pts/
12144 ?        Ss     0:00  \_ sshd: root@pts/0
12150 pts/0    Ss     0:00  |   \_ -bash
12205 pts/0    R+     0:00  |       \_ ps fxww
12206 pts/0    S+     0:00  |       \_ grep pts/
12169 ?        Ss     0:00  \_ sshd: root@pts/1
12175 pts/1    Ss+    0:00      \_ -bash

이제 기존 세션을 종료 12144하거나 닫을 수 있다는 것을 알았습니다 . 12169내 세션이 추가된다는 점을 고려하면 pts/0죽이는 것을 피할 수 있습니다 12144.

이를 자동화하려면:

exclude=`who am i | awk '{print $2}'`
ps axww | grep -v "$exclude" \
    | awk '/sshd: [^ ]*@pts/{print $1}' \
    | while read pid;
        do
            kill $pid
        done

관련 정보