내 유휴 SSH 세션을 종료하는 방법

내 유휴 SSH 세션을 종료하는 방법

유휴 SSH 세션을 종료하고 싶습니다. 이 원격 서버는 많은 사용자가 사용하고 있는데, 내가 소유한 세션의 PID를 어떻게 식별할 수 있나요?

이것을 실행하면 who사용자 이름으로 태그가 지정된 SSH 세션 목록이 표시됩니다.

$ who
                                                                                       
me      pts/0        2020-11-23 18:05 (tmux(id).%0)
me      pts/1        2020-11-06 13:28 (<ip 1>)
someone    pts/2        2020-11-09 09:36 (<ip 2>)
someone    pts/3        2020-11-26 20:26 (<ip 2>)
...

을 실행하면 pstree세션에 더 이상 사용자 이름 태그가 지정되지 않습니다.

$ pstree -p | grep sshd 

|-sshd(930)-+-sshd(3518)---sshd(3536)---python(5736)-+-{python}(5744)
           |           |-sshd(4285)---sshd(4308)
           |           |-sshd(5428)---sshd(5450)
...

답변1

루트가 아닌 이상 다른 프로세스에서는 아무 것도 할 수 없으므로 sshd모든 프로세스에 신호를 보내는 것만으로는 위험하지 않습니다.

pkill sshd

자신의 프로세스로 명시적으로 제한하려면 다음을 수행하세요.

pkill -U "$USER" sshd

USER또는 실행 중인 셸에서 변수가 사용되지 않는 경우 "$LOGNAME"대신 시도 "$USER"하거나

pkill -U "$(id -un)" sshd

이 명령에 대한 설명서도 참조하십시오 pkill.

일치하는 프로세스의 프로세스 ID 목록을 얻으려면 pgrep대신 사용하세요. 표현하거나 나열할 때만 or with를 pkill사용하세요 .pkillpgrep-o가장 오래된프로세스.

답변2

그렇다면 원격 서버에서 실행 root하지 마십시오. pkill sshd그렇지 않으면 다시 연결할 수 없습니다 ssh: connect to host yourdomain.com port 22: Connection refused. 대신에:

  1. 달리기 w. 마지막 열( 라벨이 붙음 ) WHAT에서 유휴 명령을 찾으세요 . 그런 다음 두 번째 열( 레이블이 지정됨 TTY)을 보고 유휴 세션을 찾으십시오. 예: pts/0.

  2. 달리기 ps aux | grep pts/0. 마지막 열에서 유휴 명령을 찾으세요. 해당 PID는 두 번째 열에 있습니다(예: ) 12345. 또한 -bash해당 PID를 찾아 기록해 둡니다(예: ) 12346.

  3. kill 12345; kill 12346위의 PID로 실행하세요.

  4. 재실행 w. pts/0다시 표시되어서는 안 됩니다.

관련 정보