SSH 연결 관리


9

Linux 서버에서 모든 현재 SSH 연결 목록을 찾거나 특정 SSH 연결을 끊으려면 어떻게해야합니까?


들어오고 나가는 SSH 연결에 관심이 있습니까? 아니면 둘다?
Shawn Chin

2
이 질문은 수퍼 유저

들어오는 연결에만 관심이 있습니다.
Cerin

답변:


13

이 작업을 대화식으로 수행하려는 경우 가장 간단한 방법은 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하여 연결을 종료 하기 위해 전달할 수 있습니다 .


1
-uPID를 알려줄 것입니다.
gravyface

한 사용자에 여러 개의 연결이있는 경우 IP가 표시되지 않습니다
누군가

어떤 이유로, 이것은 작동하지 않았습니다. 원격 컴퓨터에서 ssh를 사용하여 컴퓨터에 로그인했으며 내 컴퓨터에서을 실행했습니다 who -u. pid를 종료해도 원격 시스템의 연결이 종료되지 않았습니다. 그러나 lsof -i | grep ":ssh" @kce의 답변에서 제안한 후에 ​​다른 pid를 얻었습니다. 해당 프로세스를 종료하면 연결이 종료되었습니다. ssh 연결로 인해 여러 프로세스가 시작되어 연결을 종료하지 않은 사람이 표시 한 프로세스가 종료 될 수 있습니다. 그게 내 설명입니다.
Neo M Hacker

8

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

3
사용 lsof -i tcp:22하면 grep이 필요하지 않습니다.
Shawn Chin

를 실행하고 옵션을 ssh지정하지 않은 경우에만 -p..
Jindra Helcl

1

ssh 연결을 보려면 다음을 수행하십시오 netstat -atn | grep ':22'. 포트 22의 모든 연결을 보여줍니다.

연결을 끊으려면로 sshd (SSH 데몬)의 PID를 찾아보십시오 ps-ax.

편집 : bash세션 (또는 동등한 쉘) 의 PID를 찾을 수 있다고 생각합니다 . 그들을 죽이면 괜찮아 질 것입니다.

다른 리소스 : 이 스레드 에는 주제에 대한 팁 있습니다.


현재 컴퓨터에는 활성 연결이 없지만 netstat는 여전히 tcp 및 tcp6 연결을 나열합니다. sshd의 PID로 무엇을해야합니까? 단일 연결을 끊기 위해 전체 SSH 서버를 종료해야 함을 의미합니까?
Cerin

@Cerin이 두 연결은 해당 포트에서 수신 대기 중임을 나타냅니다 (만 해당)

당신은 지정하지 않았지만 나는 그것을 가지고 있습니다. 죄송합니다 : /
모드를 잘 다루십시오.

0

이 시도:

$ ps aux | grep sshd

그들을 분리하는 수 kill PID(여기서 PID루트 권한이있는 경우, 또는, 해당 사용자 과정 두 번째 열에 ID입니다)입니다.


이것은 sshd가 실행 중이고 연결이 설정된 사용자 (연결 수, IP가 아닌) 만 표시
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.