답변:
이 작업을 대화식으로 수행하려는 경우 가장 간단한 방법은 who
원격 호스트의 사용자가 있는지 간단히 확인하는 것입니다.
[you@host]$ who
user1 :0 Feb 8 09:45
user1 pts/1 Feb 14 17:56 (:0.0)
malcolm pts/3 Feb 15 17:50 (cockpit.serenity.com)
reynold pts/2 Feb 15 17:48 (host123.firefly.co.uk)
물론 이것은 완전하지는 않지만 주문형 입력은 매우 간단하고 사람의 눈으로 쉽게 처리 할 수 있습니다.
@gravyface가 지적했듯이 -u
옵션 을 포함 who
하면 연결된 PID도 인쇄 kill
하여 연결을 종료 하기 위해 전달할 수 있습니다 .
-u
PID를 알려줄 것입니다.
who -u
. pid를 종료해도 원격 시스템의 연결이 종료되지 않았습니다. 그러나 lsof -i | grep ":ssh"
@kce의 답변에서 제안한 후에 다른 pid를 얻었습니다. 해당 프로세스를 종료하면 연결이 종료되었습니다. ssh 연결로 인해 여러 프로세스가 시작되어 연결을 종료하지 않은 사람이 표시 한 프로세스가 종료 될 수 있습니다. 그게 내 설명입니다.
lsof를 사용하는 것은 어떻습니까?
# lsof -i |grep ":ssh"
sshd 1943 root 3u IPv6 5698 TCP *:ssh (LISTEN)
sshd 1943 root 4u IPv4 5700 TCP *:ssh (LISTEN)
sshd 3217 root 3r IPv4 9687 TCP www.example.com:ssh->192.168.61.11:7341 (ESTABLISHED)
sshd 3220 user1 3u IPv4 9687 TCP www.example.com:ssh->192.168.61.11:7341 (ESTABLISHED)
sshd 3327 root 3r IPv4 10595 TCP www.example.com:ssh->192.168.61.11:7385 (ESTABLISHED)
sshd 3330 user2 3u IPv4 10595 TCP www.example.com:ssh->192.168.61.11:7385 (ESTABLISHED)
그런 다음 문제가있는 연결을 끊을 수 있습니다 (예 : user2의 연결을 끊기 위해).
# kill -9 3330
lsof -i tcp:22
하면 grep이 필요하지 않습니다.
ssh
지정하지 않은 경우에만 -p
..
ssh 연결을 보려면 다음을 수행하십시오 netstat -atn | grep ':22'
. 포트 22의 모든 연결을 보여줍니다.
연결을 끊으려면로 sshd (SSH 데몬)의 PID를 찾아보십시오 ps-ax
.
편집 : bash
세션 (또는 동등한 쉘) 의 PID를 찾을 수 있다고 생각합니다 . 그들을 죽이면 괜찮아 질 것입니다.