Networking

獲取Linux中遠端主機的所有開放埠

  • March 25, 2020

嘗試連接到遠端主機的特定埠。主機可訪問(通過 ping 命令檢查)但埠不可訪問。

有什麼方法可以從我的伺服器檢查該遠端主機的所有可訪問埠。

注意:該伺服器是企業的安全伺服器,nmap 或任何第三方工具不可用且不可安裝。

嘗試使用以下腳本效果很好

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

該腳本適用於單埠掃描

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

引用自:https://unix.stackexchange.com/questions/574797