bind: Address already in use channel_setup_fwd_listener: cannot listen to port

Hinweis: In dem Thema bind: Address already in use channel_setup_fwd_listener: cannot listen to port gibt es 8 Antworten. Der letzte Beitrag () befindet sich ganz unten auf dieser Seite.
  • Guten Tag, ich versuche gerade nachdem Hochfahren automatisch einen SSH Tunnel aufzubauen.
    Das gelingt mir auch nur, wenn ich einmal kurz die Verbindung verliere bekomme ich diese Fehlermeldung "bind: Address already in use channel_setup_fwd_listener: cannotlisten to port: 7081"


    Und wenn ich mich über WLAN ins Internet verbinden will auch. Vermutlich da mein Skript zu schnell startet.



    Leider habe ich keine Ahnung wie ich diesen Port für SSH wieder frei bekomme :( Da müsste ich ja bestimmt irgendeinen Befehl nach Zeile 3 schreiben.


    Bash: sshtunneltxt.sh
    #!/bin/sh
    while true; do
        ssh -N -D7081 webtropia_backup
        sleep 30
    done

    Für den Inhalt des Beitrages 97600 haftet ausdrücklich der jeweilige Autor: Wario

  • So :) Die Datei liegt in /etc/systemd/system/

    Für den Inhalt des Beitrages 97611 haftet ausdrücklich der jeweilige Autor: Wario

  • Versuch einmal: After=network.target

    Das hat leider nicht geholfen :( Ich denke das beste wäre ein Befehl der Port X einfach frei macht ohne alle anderen Programme wie Firefox z.B zu beenden. Falls das überhaupt möglich ist xd


    sshtunnel.service - MeinShellScript Loaded: loaded (/etc/systemd/system/sshtunnel.service; enabled) Active: active (running) since Sun 2016-08-14 20:21:19 CEST; 1min 2s ago Main PID: 3683 (sshtunneltxt.sh) CGroup: /system.slice/sshtunnel.service |-2063 ssh -N -D7081 webtropia_backup |-3683 /bin/sh /root/skriptsammlung/sshtunneltxt.sh `-3686 ssh -N -D7081 webtropia_backup
    Aug 14 20:21:19 linux-3or8 systemd[1]: Started MeinShellScript.
    Aug 14 20:21:20 linux-3or8 sshtunneltxt.sh[3683]: bind: Address already in useAug 14 20:21:20 linux-3or8 sshtunneltxt.sh[3683]: channel_setup_fwd_listener: cannot listen to port: 7081Aug 14 20:21:20 linux-3or8 sshtunneltxt.sh[3683]: Could not request local forwarding.

    Für den Inhalt des Beitrages 97615 haftet ausdrücklich der jeweilige Autor: Wario

  • Ich meinte es auch hierfür:

    Und wenn ich mich über WLAN ins Internet verbinden will auch. Vermutlich da mein Skript zu schnell startet.

    Für den Inhalt des Beitrages 97616 haftet ausdrücklich der jeweilige Autor: Sauerland

  • Ich habe einen Stand erreicht der eines Postes hier würdig ist.
    Wenn ich es jetzt noch schaffe das dieses Skript oder der passende Dienst sshtunnel.service nachdem aufwecken von Standby automatisch gerestartet wird hätte ich/wir es geschafft.

    Bash
    #!/bin/sh
    
    
    while true; do
        steinadlerr=`netstat -tulpn | grep 7081 | tail -n1 | awk '{print $7}' | cut -c 1-4`
        kill $steinadlerr
        sleep 5
        ssh -N -D7081 webtropia_backup
    done

    Für den Inhalt des Beitrages 97634 haftet ausdrücklich der jeweilige Autor: Wario

  • Das denke ich nicht.


    Erst einmal ist das Script unzuverlässig. Sobald ein Prozess mit der PID gleich Port existiert, wird es fehlschlagen.
    Da der Output von netstat nicht formatiert werden kann, ist sed sicher die bessere Lösung.
    (Die natürlich auch schneller und ressourecenschonender ist, weil weniger subshells)



    Vielleicht magst du das ändern:

    Code
    # gibt PID der Prozesse, die auf
    port=5353
    # lauschen aus.
    # beachte, wie durch Singlequotes das sed Script unterbrochen wird,
    # um $port von der shell einsetzen zu lassen.
    netstat -tulpn | sed -rn 's/.*:'$port'.*[[:blank:]]+([[:alnum:]]+)\/[[:alnum:]]+.*$/\1/p'

    Es ist dein Job, zu testen, ob da mehrere Prozesse laufen.
    Vielleicht gleich in ein Array speichern und dann gucken?



    Du kannst Scripte leicht auch bei WakeUp starten. Man kann mehrere Targets angeben.


    Code
    After=basic.target suspend.target hibernate.target
    WantedBy=basic.target suspend.target hibernate.target

    Dennoch löst das dein Problem nicht.
    Letzlich wird doch dein Tunnel zweimal gestartet.
    Warum schreibst du RemainAfterExit=yes?


    Und evtl. magst du dir mal autossh angucken.