Spring Update Windows 10 ssh client reverse tunelling not working

2

1

I'm trying to use the ssh client command available in windows 10 since the spring update.

I do not use the "OpenSSH Server" optional module and it is not installed, I'm using only the "OpenSSH client"

This ssh command seems to work correctly, I can connect to a remote linux ssh server, and even use ssh tunelling with the following command

ssh -L 8080:localhost:11111 user@remote

And then connect with my own application through localhost:8080 from the windows client.

But the reverse tunneling does not seem to work.the following command :

 ssh -R 8080:localhost:11111 user@remote

is working and the port is opened on my remote server, as show by nc on my remote linux:

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

But the reverse tunnel is not working and I cannot communicate trough the tunnel.

Is this a bug in microsost ssh implementation ? Am I doing something wrong ?

I have completely disabled the windows firewall, have no other firewall installed and am connected on a private network.

Mathieu Westphal

Posted 2018-08-27T12:08:35.413

Reputation: 669

"I am however unable to connect with my application from the remote to the client" Please [edit] your question to show exactly how you're telling this application to connect to this remote port, and explain exactly what happens when you try. – Kenster – 2018-08-27T15:25:20.790

This is a quite big application and I do not work the socket part. It is working well through git bash ssh and Putty. The problem is not application side. – Mathieu Westphal – 2018-08-27T15:26:47.410

But If you have another way to test the tunnel, like a simple application I can run, that would be great. – Mathieu Westphal – 2018-08-28T08:34:46.257

Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. You were asked to clarify your question over a week ago, instead of clarifying it, you have started a bounty. If your question is not clear, and there is not enough detail to answer your question, your bounty will go to waste. Likewise, if it remains unclear, a moderator can still take action to close the question. – Ramhound – 2018-10-04T12:02:06.563

I've updated the question. Let me know what is not clear. – Mathieu Westphal – 2018-10-04T13:25:09.130

Could you include the ssh command that is not working? – harrymc – 2018-10-05T07:50:08.867

It is already in the post. ssh -R 8080:localhost:11111 user@remote. The command in itself works but the tunnel do not let anything goes through. – Mathieu Westphal – 2018-10-05T08:49:54.090

I meant the command which uses the tunnel. – harrymc – 2018-10-05T09:26:34.713

I finally found a way to test it simply and believe there is a bug in Microsoft OpenSSH – Mathieu Westphal – 2018-10-05T12:27:30.607

Answers

3

There is definitely a bug in Microsoft OpenSSH implementation from 2018 Spring Update.

How to test it : On the local (Windows 10), install Python3, Putty and make sure ssh is available. Then

  1. Run a python http server in a terminal (on port 8000 by default)

    python -m http.server

  2. Create a reverse connection ssh tunnel

    ssh -R 8080:localhost:8000 user@remote

On the remote, connect trough the tunnel with telnet

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

The tunnel is still runnning but telnet disconnect almost instantly after the connection.

If you replase ssh by the plink.exe from putty, it works flawlessly and you can connect with a browser.

You can find my bug report here : https://github.com/PowerShell/Win32-OpenSSH/issues/1265

Mathieu Westphal

Posted 2018-08-27T12:08:35.413

Reputation: 669