Sobes.tech
Junior

Hogyan ellenőrizhető, hogy egy port nyitva van-e egy távoli vagy helyi gépen?

sobes.tech MI

Válasz az MI-től

A nyitott port ellenőrzéséhez távoli vagy helyi gépen a következő módszereket használhatja:

  1. netcat (nc): Általános eszköz hálózati kapcsolatok kezelésére.

    • Helyi gép:
      nc -zv localhost <port>
      
    • Távoli gép:
      nc -zv <távoli_háló> <port>
      

    Az -z (nulla-I/O mód) és -v (részletes) opciók a vizsgálathoz, adatküldés nélkül, és részletes információk megjelenítéséhez.

  2. telnet: Távoli kezelés protokoll, amely a megadott porton lévő kapcsolat ellenőrzésére használható.

    • Helyi gép:
      telnet localhost <port>
      
    • Távoli gép:
      telnet <távoli_háló> <port>
      

    Ha a kapcsolat létrejön (általában megjelenik egy felhívás vagy üres sor), a port nyitott. A bezáráshoz nyomja meg a Ctrl+], majd quit és Enter.

  3. nmap: Erőteljes port szkenner. Telepítést igényel.

    • Helyi gép:
      nmap -p <port> localhost
      
    • Távoli gép:
      nmap -p <port> <távoli_háló>
      

    A kimenet megmutatja a port állapotát: open, closed vagy filtered.

  4. < /dev/tcp vagy < /dev/udp (Bash-ben): Bash-ben fájldeskriptorokat használva TCP vagy UDP kapcsolatokat lehet létrehozni.

    • Helyi gép (TCP):
      timeout 1 bash -c "cat < /dev/tcp/localhost/<port>" 2>/dev/null && echo "Port <port> nyitott" || echo "Port <port> zárt"
      
    • Távoli gép (TCP):
      timeout 1 bash -c "cat < /dev/tcp/<távoli_háló>/<port>" 2>/dev/null && echo "Port <port> nyitott" || echo "Port <port> zárt"
      

    A timeout a blokkolás elkerülése érdekében van, ha a port zárt. A 2>/dev/null elrejti a hibákat. Ez a módszer nem működik UDP esetén.

  5. Python: Socketek használata a ellenőrzéshez.

    import socket
    
    def check_port(host, port):
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.settimeout(1)  # Időkorlát beállítása
        try:
            s.connect((host, port))
            print(f"{host} {port} portja nyitott")
        except (socket.timeout, ConnectionRefusedError):
            print(f"{host} {port} portja zárt vagy szűrt")
        finally:
            s.close()
    
    # Példa használat
    check_port("localhost", 80)       # Helyi gép ellenőrzése
    check_port("google.com", 443)  # Távoli gép ellenőrzése
    

A módszer kiválasztása a rendelkezésre álló eszközöktől, az operációs rendszertől és a feladattól függ.