Spring Update Windows 10 ssh-Client-Reverse-Tunelling funktioniert nicht

647
Mathieu Westphal

Ich versuche, den ssh-Clientbefehl zu verwenden, der seit dem Frühjahrsupdate in Windows 10 verfügbar ist.

Ich verwende das optionale Modul "OpenSSH Server" nicht und es ist nicht installiert. Ich verwende nur den "OpenSSH-Client".

Dieser ssh-Befehl scheint korrekt zu funktionieren. Ich kann eine Verbindung zu einem Remote-Linux-SSH-Server herstellen und sogar mit dem folgenden Befehl SSH-Tunelling verwenden

ssh -L 8080:localhost:11111 user@remote 

Und dann verbinden Sie sich mit meiner eigenen Anwendung über localhost: 8080 vom Windows-Client aus.

Das umgekehrte Tunneln scheint jedoch nicht zu funktionieren. Der folgende Befehl:

 ssh -R 8080:localhost:11111 user@remote 

funktioniert und der Port ist auf meinem Remote-Server geöffnet, wie von nc auf meinem Remote-Linux gezeigt:

nc -v 127.0.0.1 8080 localhost.localdomain [127.0.0.1] 8080 (http-alt) open 

Der umgekehrte Tunnel funktioniert jedoch nicht und ich kann nicht durch den Tunnel kommunizieren.

Ist das ein Fehler in der Microsost-SSH-Implementierung? Mache ich etwas falsch ?

Ich habe die Windows-Firewall vollständig deaktiviert, habe keine andere Firewall installiert und bin mit einem privaten Netzwerk verbunden.

2
"Ich kann jedoch keine Verbindung zwischen meiner Anwendung und dem Client herstellen" Bitte bearbeiten Sie Ihre Frage, um genau zu zeigen, wie Sie dieser Anwendung sagen, dass sie eine Verbindung zu diesem Remote-Port herstellen soll, und erklären Sie genau, was passiert, wenn Sie es versuchen. Kenster vor 6 Jahren 0
Dies ist eine ziemlich große Anwendung und ich arbeite nicht mit dem Sockel-Teil. Es funktioniert gut durch Git bash ssh und Putty. Das Problem ist nicht anwendungsseitig. Mathieu Westphal vor 6 Jahren 0
Aber wenn Sie den Tunnel auf andere Weise testen können, wie eine einfache Anwendung, die ich ausführen kann, wäre das großartig. Mathieu Westphal vor 6 Jahren 0
Bearbeiten Sie die Frage, um sie auf ein bestimmtes Problem zu beschränken, und zwar so detailliert, dass eine angemessene Antwort gefunden wird. Vermeiden Sie es, mehrere unterschiedliche Fragen gleichzeitig zu stellen. Auf der Seite How to Ask finden Sie Hilfe zur Klärung dieser Frage. Sie wurden vor über einer Woche aufgefordert, Ihre Frage zu klären, anstatt sie zu klären, Sie haben eine Kopfprämie gestartet. Wenn Ihre Frage nicht klar ist und es nicht genügend Details gibt, um Ihre Frage zu beantworten, wird Ihr Kopfgeld verfallen. Wenn es weiterhin unklar bleibt, kann ein Moderator trotzdem Maßnahmen zum Schließen der Frage ergreifen. Ramhound vor 6 Jahren 0
Ich habe die Frage aktualisiert. Lass mich wissen, was nicht klar ist. Mathieu Westphal vor 6 Jahren 0
Könnten Sie den Befehl ssh einschließen, der nicht funktioniert? harrymc vor 6 Jahren 0
Es ist schon in der Post. `ssh -R 8080: localhost: 11111 user @ remote`. Der Befehl an sich funktioniert, aber der Tunnel lässt nichts durch. Mathieu Westphal vor 6 Jahren 0
Ich meinte den Befehl, der den Tunnel benutzt. harrymc vor 6 Jahren 0
Ich fand schließlich einen Weg, es einfach zu testen und glaube, dass es einen Fehler in Microsoft OpenSSH gibt Mathieu Westphal vor 6 Jahren 0

1 Antwort auf die Frage

2
Mathieu Westphal

Es gibt definitiv einen Fehler in der Microsoft OpenSSH-Implementierung aus dem Spring Update 2018.

So testen Sie es: Installieren Sie auf dem lokalen Computer (Windows 10) Python3 und Putty, und stellen Sie sicher, dass ssh verfügbar ist. Dann

  1. Einen Python-HTTP-Server in einem Terminal ausführen (standardmäßig an Port 8000)

    python -m http.server

  2. Erstellen Sie einen ssh-Tunnel mit umgekehrter Verbindung

    ssh -R 8080:localhost:8000 user@remote

Verbinden Sie sich auf der Fernbedienung über den Tunnel mit Telnet

>telnet localhost 8080 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. Connection closed by foreign host. 

Der Tunnel läuft immer noch, aber die Verbindung zu Telnet wird fast sofort nach der Verbindung unterbrochen.

Wenn Sie die Datei sshplink.exe aus Putty replizieren, funktioniert sie einwandfrei und Sie können eine Verbindung mit einem Browser herstellen.

Sie finden meinen Fehlerbericht hier: https://github.com/PowerShell/Win32-OpenSSH/issues/1265