Networking
獲取Linux中遠端主機的所有開放埠
嘗試連接到遠端主機的特定埠。主機可訪問(通過 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