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