Linux에서 원격 호스트의 열려 있는 모든 포트를 가져옵니다.

Linux에서 원격 호스트의 열려 있는 모든 포트를 가져옵니다.

원격 호스트의 특정 포트에 연결해 보십시오. 호스트에 연결할 수 있지만(ping 명령으로 확인) 포트는 연결되지 않습니다.

내 서버에서 이 원격 호스트의 액세스 가능한 모든 포트를 확인할 수 있는 방법이 있습니까?

참고: 이 서버는 기업 보안 서버이며 nmap 또는 타사 도구를 사용할 수 없으며 설치할 수 없습니다.

답변1

잘 작동하는 아래 스크립트를 사용해보십시오.

for i in host1 host2; 
do 
timeout 10 ssh -o 'StrictHostKeyChecking no' $i -A "exit"
if [[ $? == 0 ]]
then 
echo "host $i is sshable"
ssh -o 'StrictHostKeyChecking no' $i -A <<'EOF'
k=`hostname`
netstat -altnp| awk '$0 ~ /LISTEN|ESTABLISHED/'| awk '{print $4}'| awk -F ":" '{print $NF}'| awk '{if(!seen[$1]++)print $0}'| sed "1i below are open ports on the host '$k'"
EOF
else echo "host $i is not sshable"
fi
done

답변2

이 스크립트는 단일 포트 스캐닝에 적합합니다.

if timeout 5 bash -c '</dev/tcp/kernel.org/443 &>/dev/null'
then
  echo "Port is open"
else
  echo "Port is closed"
fi

열린 포트를 캡처하기에는 1초가 너무 빠른지 잘 모르겠지만 전체 포트 범위는 다음과 같습니다.

#!/bin/bash
for PORT in {1..65535}; do
timeout 1 bash -c "</dev/tcp/45.62.xxx.xxx/$PORT &>/dev/null" &&  echo "Port $PORT is open"
done

관련 정보