sshssh-tunnel

SSH tunnel not working - empty server response


I am trying to setup an SSH tunnel but I am new to this process. This is my setup:

Machine B has a web service with restricted access. Machine A has been granted access to Machine B's service, based on a firewall IP whitelist.

I can connect to Machine A using an ssh connection. After that I try to access the webservice on Machine B from my localhost, but I cannot.

The webservice endpoint looks like this: service.test.organization.com:443/org/v1/sendData

So far, I have created an ssh tunnel like this: ssh -L 1234:service.test.organization.com:443 myuser@machineb.com

My understanding was that using this approach, I could hit localhost:1234 and it would be forwarded to service.test.organization.com:443, through Machine B.

I have confirmed that from Machine B, I can execute a curl command to send a message to the webservice, and i get a response (so that is working). I have tried using PostMan in my browser, and curl in terminal from localhost, but I have been unsuccessful. (curl -X POST -d @test.xml localhost:1234/org/v1/sendData)

Error message: curl: (52) Empty reply from server

There's a lot of material on SSH and I am sifting through it, but if anyone has any pointers, I would really appreciate it!


Solution

  • The networking issue was caused by the request format. My request object was built with a destination of 'localhost:1234'. So even though it was reaching the proper machine, the machine ignored it.

    To solve this I added a record in my host file, like this: service.test.organization.com 127.0.0.1

    Then I was able send the message. First I opened the tunnel, ssh -L 443:service.test.organization.com:443 myuser@machineb.com, Then using using this curl command: curl -X POST -d @test.xml service.test.organization.com:443/org/v1/sendData

    The host file causes the address to resolve to localhost, then the ssh tunnel knows to forward it on.