获取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

相关内容