Ankündigung

Einklappen
Keine Ankündigung bisher.

Websocket Tunneln über putty?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Websocket Tunneln über putty?

    Hallo,

    ich scheitere an WebSockets über ssh

    Zwischen 2 Standorten habe ich eine ssh Verbindung.


    Nun will ich über Putty einen Tunnel für Port 80 und 8080 einrichten

    Die Putty Tunnelregel:
    L8000 192.168.2.40:80 funktioniert

    localhost:8000/admin landet auf dem entfernten Edomi und ist voll bedienbar

    nun den Port für Websocket
    L8080 192.168.2.50:8080


    localhost:8000/visu landet auf dem Login der Visu, nach Eingabe der Zugangsdaten dreht sich aber nur der rote Kreis


    Wo muß ich noch was drehen, damit das Login geht
    Gruß Hartwig

    #2
    Zitat von hartwigm Beitrag anzeigen
    L8000 192.168.2.40:80 funktioniert
    L8080 192.168.2.50:8080
    Müsste eigentlich gehen, zwei verschiedene IPs sind mir aufgefallen.

    Kommentar


      #3
      Mit welcher URL du denn die Visu auf?

      Bei mir funktioniert es nur, wenn ich Port 80 und 8080 verwendet. Lokal 81 auf Edomi:80 funktioniert nicht.
      Wichtig ist, dass du den vollständigen Namen oder IP Adresse verwendest, d.h. beim Forwarding dieselbe Notation wie beim Aufruf im Browser.
      Die Verwendung von localhost funktioniert nicht.

      Folgende zwei Varianten funktionieren bei mir:

      pc.domain.home hat dabei die IP 192.168.0.11
      und edomi-dev ist der DNS Name des EDOMI Servers. Hier kann man auch die IP verwenden.

      Code:
      ssh -L pc.domain.home:80:edomi-dev:80 -L pc.domain.home:8080:edomi-dev:8080 root@edomi-dev
      in Chrome: http://pc.domain.home/visu
      oder

      Code:
      ssh -L 192.168.0.11:80:edomi-dev:80 -L 192.168.0.11:8080:edomi-dev:8080 root@edomi-dev
      in Chrome: http://192.168.0.11/visu

      Kommentar


        #4
        Danke für Eure Hilfe.


        Leider bin ich noch immer nicht weiter gekommen.

        Hier mal meine Einstellungen im Putty
        hapi .50 war ein Tippfehler, war schon mit .40 getestet.

        putty.PNG
        wenn ich nun im Browser (Chrome)
        Code:
         localhost:8000/admin
        eingebe, lande ich auf der Admin-Seite

        Ersetze ich localhost mit der IP Adresse meines PC´s ist ein Zugriff nicht möglich.

        Wie oben beschrieben, komme ich bei localhost:8000:/visu auf die Visu-Seite und kann auch username und Passwort eingeben dann passiert aber nichts mehr.


        Hilfe, Anregung sind herzlich willkommen.


        Wenn ich in putty statt der L8000 L80 setze komme ich mit localhost:80/admin nicht an den Edomi.

        Port 80 ist gem. netstat local genutzt, so dass ich auf einen anderen Port ausweichen muss.

        @janofe: Ich probiere mal Port 80 local frei zu bekommen, wobei mir nicht klar ist, warum das nur mit 80 gehen sollte. Ich komme ja auf die Visu und die Admin Seite, es kann ja nur am Websocket liegen.


        Firewall testweise komplett aus, verhalten ist identisch..




        Gruß Hartwig

        Kommentar


          #5
          Hallo hartwigm ,

          jonofe hat doch explizit geschrieben, dass localhost nicht funktioniert!?
          Kind regards,
          Yves

          Kommentar


            #6
            Sorry, dann kapiere ich das nicht!

            Wenn ich die IP Adresse verwende geht bei mir gar nichts. Nur mit Localhost: komme ich zumindest bis zur Anmeldung.

            janofe spricht von einer ssh Verbindung Linux - Linux.

            Ich von einer über Putty (auf Windows) erstellen Verbindung. Hier habe ich nur die putty Einstellungen.
            Da kann ich keine ssh Kommando setzen, oder steht mir einer auf der Leitung?

            Gruß Hartwig

            Kommentar


              #7
              Zitat von hartwigm Beitrag anzeigen
              Wenn ich die IP Adresse verwende geht bei mir gar nichts. Nur mit Localhost: komme ich zumindest bis zur Anmeldung.
              Du musst im Browser die IP des Rechners aufrufen, an dem Du Dich befindest! Also nicht die IP von Edomi. Das ist ja der Witz des Tunnels.


              Zitat von hartwigm Beitrag anzeigen
              janofe spricht von einer ssh Verbindung Linux - Linux.
              Das spielt keine Rolle, der Effekt ist identisch.


              Zitat von hartwigm Beitrag anzeigen
              Ich von einer über Putty (auf Windows) erstellen Verbindung. Hier habe ich nur die putty Einstellungen.
              Da kann ich keine ssh Kommando setzen, oder steht mir einer auf der Leitung?
              Offenbar ist dem so.

              Ich versuch's mal: Mit PuTTY machst Du genauso eine ssh-Verbindung auf und innerhalb dieser Verbindung werden zwei Tunnel etabliert, durch die Du Dich mit der Edomi-Maschine verbindet. Damit man auf die Admin-Seite kommt, reicht der Tunnel von Port 80. Der Visu-Zugriff wird auch über Port 80 aufgebaut, übertragt aber dann seine Daten via Websocket über Port 8080. Dass die Visu-Verbindung über Port 80 aufgebaut wird sieht man daran, dass der Login funktioniert. Das ist noch Port80-Traffic. Damit die vollständig Visu-Verbindung aufgebaut werden kann, darf der Zugriff nicht via localhost erfolgen, da die Websocket-Verbindung von Edomi ausgehend dann auf der Edomi-Maschine bleibt und nicht zurück zum anfragenden Client geht.
              Zuletzt geändert von starwarsfan; 08.02.2018, 22:13.
              Kind regards,
              Yves

              Kommentar


                #8
                Habe es gerade noch mal per Bitvise SSH Client von Windows aus getestet. Auch hier funktioniert es wie oben beschrieben.
                Wenn du Windows 10 und Skype installiert hast, dann belegt Skype den Port 80, warum auch immer.
                Wenn der Port frei ist und man dann Port 80 und 8080 weiterleitet, dann funktioniert es. In Bitvise mit der IP oder dem DNS Namen.

                In Putty funktioniert es dann sogar mit dem Aufruf per localhost, da Putty scheinbar alles an das localhost interface bindet.

                Warum es mit einem Port 81 nicht funktioniert kann ich nicht genau sagen. Die Webverbindung funktioniert ja grundsätzlich. Ich vermute dass EDOMI per JS den Handshake zur Aushandlung der Websocket Verbindung machen. Das Ganze läuft in deinem Browser ab und zwar über die HTTP Verbindung. EDOMI berücksichtigt dabei vermutlich nicht den Port, den du in Chrome gerade verwendest sondern nimmt immer Port 80. Daher führt die Aushandlung der Websocket Verbindung nicht zum Erfolg.

                Ist aber nur Spekulation...

                Kommentar


                  #9
                  Hallo miteinander

                  Zitat von jonofe Beitrag anzeigen
                  Die Webverbindung funktioniert ja grundsätzlich. Ich vermute dass EDOMI per JS den Handshake zur Aushandlung der Websocket Verbindung machen.
                  OT:
                  Das vermute ich auch, wobei aber irgendetwas im PHP-Websocket nicht sauber läuft. Genau das ist auch das Problem, mit dem ich beim Edomi Docker Container kämpfe. Mit sauberem Port-Mapping baut sich die Websocket-Verbindung in den Container hinein nicht auf. Mit diversen Mini-Demo-Apps funktioniert das jedoch auch im Docker Container problemlos. Im Moment habe ich das Docker-Netzwerk in Verdacht und bin dort am suchen...
                  Kind regards,
                  Yves

                  Kommentar


                    #10
                    Zitat von starwarsfan Beitrag anzeigen
                    Hallo miteinander



                    OT:
                    Das vermute ich auch, wobei aber irgendetwas im PHP-Websocket nicht sauber läuft. Genau das ist auch das Problem, mit dem ich beim Edomi Docker Container kämpfe. Mit sauberem Port-Mapping baut sich die Websocket-Verbindung in den Container hinein nicht auf. Mit diversen Mini-Demo-Apps funktioniert das jedoch auch im Docker Container problemlos. Im Moment habe ich das Docker-Netzwerk in Verdacht und bin dort am suchen...
                    Habe mir das jetzt gerade noch mal etwas genauer angeschaut und die Lösung für das Problem von hartwigm gefunden.
                    Es liegt tatsächlich im Aufbau der Websocket Verbindung in der Datei

                    Code:
                    /usr/local/edomi/www/visu/apps/app0.php
                    Ziemlich am Ende dieser Datei wird die Websocket Verbindung aufgebaut. Dies passiert im Client mit diesem JS Statement:

                    Code:
                    visu_socket.open(((window.location.protocol=='https:')?'wss':'ws'),window.location.host,<?echo global_visuWebsocketPort;?>);
                    Problem ist nun, dass window.location.host den Hostnamen aus der URL und zusätzlich den Port enthält, d.h. bei einer lokalen Portumleitung von Port 81 auf EDOMI:80 wird der Aufruf im Browser über http://localhost:81/visu gemacht und der Aufbau der Websocket Verbindung erfolgt so:

                    Code:
                    visu_socket.open('ws','localhost:81','8080');
                    Damit scheitert dann der Websocket Verbindungsaufbau, denn es wird versucht eine Verbindung zum Server "localhost:81" auf Port 8080 aufzubauen.

                    Lösung:

                    Ersetze window.location.host durch window.location.hostname, also:

                    Code:
                    visu_socket.open(((window.location.protocol=='https:')?'wss':'ws'),window.location.hostname,<?echo global_visuWebsocketPort;?>);
                    Danach funktionierts auch mit einer Umleitung von lokalem Port 81 auf EDOMI Port 80.

                    Falls es hier keine anderen Abhängigkeiten gibt, die ich derzeit nicht sehe, kann gaert das vielleicht ändern.

                    starwarsfan: Ggf. ist das auch die Lösung für das Docker Problem, falls dort auch explizit ein anderer Port für den Webzugriff verwendet wird.
                    Zuletzt geändert von jonofe; 09.02.2018, 08:03.

                    Kommentar


                      #11
                      Zitat von jonofe Beitrag anzeigen
                      starwarsfan: Ggf. ist das auch die Lösung für das Docker Problem, falls dort auch explizit ein anderer Port für den Webzugriff verwendet wird.
                      Danke für die Info, ich werd's mir anschauen. Die letzten Experimente sind schon eine Weile her aber ich meine, dass ich das mit den Standard-Ports versucht habe...
                      Kind regards,
                      Yves

                      Kommentar


                        #12
                        @jonofe: Vielen Dank, es funktioniert nun perfekt, nun kann ich mit Putty schon mal auf einen entfernten UP zugreifen auf dem Edomi unter Docker unter Ubuntu läuft.


                        Mein eigentliche Ziel ist aber über einen reverse ssl Tunnel aus einem fremden Netz auf ein SSL Gateway in meinem Netz zu kommen.

                        Dies funktioniert schon mal so, dass der UP sich mit meinem Gateway verbindet. Damit komme ich über <ip-Gateway-im-lokalen-Netz>:8000/visu auf den entfernten Edomi.

                        Das Problem ist aber auch hier, dass nach der Anmeldung Schluß ist, also gleiches Problem wie ursprünglich beschrieben.

                        Die funktionierende Putty-Verbindung starte ich jetzt auch mit <ip-Gateway-im-Lokalen-Netz>:5000


                        Für den reverse-ssl-tunnel habe ich dieses Howto benutzt:
                        https://www.rustimation.eu/index.php...t-fur-schritt/






                        in deiner Anleitung ist noch ein kleiner Fehler
                        /usr/local/edomi/www/visu/apps/app0.js der Dateiname lautet app0.php
                        Gruß Hartwig

                        Kommentar


                          #13
                          jonofe Werde ich anpassen - man kann ja nicht mit allen Eventualitäten rechnen Danke für den Tipp!
                          EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

                          Kommentar

                          Lädt...
                          X