リモートホストの特定のポートに接続してみてください。ホストに接続できますが(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