尝试连接到远程主机的特定端口。主机可访问(通过 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