Sådan viser du aktuelle åbne SSH-tunneler på Linux med et shell-script

Hvordan kan en liste over aktuelle åbne SSH-tunneler på en Linux-maskine vises via et shell-script, inklusive både lokale og eksterne porte?

For at vise en liste over aktuelle åbne SSH-tunneler på en Linux-maskine, kan du oprette og køre et shell-script, der finder SSH-processer og kontrollerer deres kommandolinjer for lokale eller eksterne port forwarding.

Sådan vises en liste over aktuelle åbne SSH-tunneler på en Linux-maskine via et shell-script

For at vise en liste over aktuelle åbne SSH-tunneler på en Linux-maskine, inklusive både lokale og eksterne porte, kan du bruge et shell-script. Følgende trin beskriver, hvordan du kan oprette og køre et sådant script:

  1. Opret et nyt shell-script. Du kan bruge en teksteditor som nano eller vim til at oprette filen. For eksempel:

    nano list_ssh_tunnels.sh
  2. Tilføj følgende indhold til scriptet for at finde og vise de aktuelle SSH-tunneler:

    #!/bin/bash
    
    # Find all SSH processes
    ps aux | grep ssh | grep -v grep | while read -r line ; do
        # Extract the process ID (PID)
        pid=$(echo $line | awk '{print $2}')
        
        # Get the command line of the process
        cmdline=$(cat /proc/$pid/cmdline | tr '\0' ' ')
        
        # Check if the command line contains '-L' or '-R' for local or remote port forwarding
        if [[ $cmdline == *"-L"* ]] || [[ $cmdline == *"-R"* ]]; then
            echo "SSH Tunnel found:"
            echo "PID: $pid"
            echo "Command: $cmdline"
            echo ""
        fi
    done
  3. Gem og luk filen.

  4. Gør scriptet eksekverbart ved at køre følgende kommando:

    chmod +x list_ssh_tunnels.sh
  5. Kør scriptet for at vise de aktuelle SSH-tunneler:

    ./list_ssh_tunnels.sh

Dette script vil finde alle kørende SSH-processer, kontrollere deres kommandolinjer for lokale (-L) eller eksterne (-R) port forwarding og derefter vise relevante oplysninger, herunder proces-ID (PID) og den fulde kommandolinje.