.bashrc
로그인할 때마다 활성 SSH 연결을 볼 수 있도록 몇 가지 명령을 추가했습니다 . 그러나 유사한 포트 번호에는 "223346"과 같이 "22"가 포함되어 있기 때문에 SSH 연결만 표시되지 않는 경우가 있습니다.
실행할 명령은 다음과 같습니다.
netstat -tan | grep ":22\|ssh" | grep -v "LISTEN" | awk '{print " "$4" -> "$5" "$6}'
때로는 다음과 같이 출력됩니다.
192.168.1.75:52623 -> 213.174.2.30:22650 SYN_SENT
192.168.1.75:22 -> 192.168.1.109:60561 ESTABLISHED
grep을 사용하여 SSH 연결만 표시하는 방법이 있습니까? 감사해요!
답변1
Linux의 경우 매뉴얼 페이지에 ss
정확한 예가 나와 있습니다.
ss -o state established '( dport = :ssh or sport = :ssh )'
당신은 또한 볼 수 있습니다
lsof -i tcp:22
또는:
lsof -i :53
(tcp 또는 기타 전송 프로토콜)
단, lsof
슈퍼유저가 아닌 경우 소유하지 않은 프로세스에 대한 정보는 나열되지 않습니다.
답변2
나는 이 테스트를 통해 접근할 것이다:
- 설정된 연결 및
- 중 하나를 포함들어오는(필드 3의 포트는 22입니다.) 또는나라를 떠나
:
(필드 4의 포트는 22입니다.) 연결 - 필드의 끝과 사이에 고정됩니다$
.
포함하도록 논리를 조정할 수 있습니다.누구나들어오거나 나가는 것, 그것이 당신이 추구하는 것이라면.
netstat의 플래그를 사용하는 경우 -n
"ssh"를 검색할 필요가 없습니다. IP를 확인하려고 할 때 포트만 숫자로 지정하도록 요구하고 netstat 플래그 --numeric-ports
도 제거했습니다. -a
"LISTEN " 라인을 필터링합니다(다른 엔드포인트에 연결되어 있지 않기 때문입니다). 설정된 연결만 인쇄하므로 출력에서 필드 6("ESTABLISHED")도 제거했습니다. 이는 정적으로든 동적으로든 쉽게 다시 추가할 수 있습니다.
netstat -n | awk '$6 == "ESTABLISHED" && ($3 ~ /:22$/ || $4 ~ /:22$/) { print $4 " -> " $5}'
또는
netstat --numeric-ports | awk '$6 == "ESTABLISHED" && ($3 ~ /:22$/ || $4 ~ /:22$/) { print $4 " -> " $5}'