OpenSSH config file on Windows - ProxyCommand not working

16,528

Solution 1

Ok so I think I figured this out, although my problem is not solved, as it can't be.

From my research and thanks to https://superuser.com/users/213663/martin-prikryl I learned that there is no build of OpenSSH for Windows with support of ProxyCommand (at least I couldn't find one, and on their site is such info).

The reason I got:

/bin/sh: No such file or directory
write: Broken pipe

Was because of bad OpenSSH build. I downloaded it from

https ://sourceforge.net/projects/sshwindows/

And according to the reviews there, this build is broken! Please do not use it! After I uninstalled this OpenSSH and installed official one from the website (or from Windows 10 optional functions) I got correct error:

Proxy connect is not supported in Windows yet

Solution 2

I fought with this today beacuse I wanted to use ProxyJump in Windows. The problem seems to be that the openssh in Windows might call the wrong ssh which did not work for me.

λ ssh.exe -v target-via-pj
OpenSSH_for_Windows_7.7p1, LibreSSL 2.6.5
debug1: Reading configuration data C:\\Users\\nico/.ssh/config
debug1: C:\\Users\\nico/.ssh/config line 41: Applying options for target-via-pj
debug1: Setting implicit ProxyCommand from ProxyJump: ssh -v -W '[%h]:%p' my-proxy
debug1: Executing proxy command: exec ssh -v -W '[XXX.XXX.XXX.XXX]:22' my-proxy
CreateProcessW failed error:2
posix_spawn: No such file or directory

What works for me is specifying the ProxyCommand explicitly. Here is my definition in Windows of my proxy and target.

Host my-proxy
        HostName 192.168.66.22                 
        User user                              
        IdentityFile ~/.ssh/id_rsa

Host target-via-pj
          Hostname XXX.XXX.XXX.XXX          
          User user
          ProxyCommand ssh.exe -W %h:%p proxy
          IdentityFile ~/.ssh/id2_rsa     

This leads to:

λ ssh.exe -v target-via-pj                                                                      
OpenSSH_for_Windows_7.7p1, LibreSSL 2.6.5                                                     
debug1: Reading configuration data C:\\Users\\nico/.ssh/config                               
debug1: C:\\Users\\nico/.ssh/config line 41: Applying options for target-via-pj                
debug1: Executing proxy command: exec ssh.exe -W XXX.XXX.XXX.XXX:22 proxy
debug1: key_load_public: No such file or directory                                            
debug1: identity file C:\\Users\\nico/.ssh/id_rsa type -1                                  
debug1: key_load_public: No such file or directory                                            
debug1: identity file C:\\Users\\nico/.ssh/id_rsa-cert type -1                             
debug1: Local version string SSH-2.0-OpenSSH_for_Windows_7.7                                  
debug1: Remote protocol version 2.0, remote software version OpenSSH_7.6p1 Ubuntu-4ubuntu0.3  
debug1: match: OpenSSH_7.6p1 Ubuntu-4ubuntu0.3 pat OpenSSH* compat 0x04000000                 
debug1: Authenticating to XXX.XXX.XXX.XXX:22 as 'user'                                       

Hope that helps!

Share:
16,528

Related videos on Youtube

Jacek
Author by

Jacek

Updated on September 18, 2022

Comments

  • Jacek
    Jacek over 1 year

    I am trying to use OpenSSH ProxyCommand on Windows to connect to device2 through device1. Device2 requests xxxxx port forwarding and connection without ProxyCommand works fine (but requires first connecting to device1 and then device2, and I want easy, one step connection).

    I've created C:\Program Files\OpenSSH\etc\ssh_config file as following:

    Host device1
    Hostname xxx.xxx.xx.xx
    User root
    
    Host device2
    ProxyCommand ssh -q device1 nc -q0 localhost xxxxx
    

    Now when I type

    ssh user@device2
    

    I get

    /bin/sh: No such file or directory
    write: Broken pipe
    

    I have checked this on Linux OS and it worked just fine. Could you please explain what might me wrong?

    Additionally I've also tried creating config in C:\Program Files\OpenSSH\home\user\.ssh\config and got the same result.

    When I delete config file then I get

    ssh: Could not resolve hostname device2: Name or service not known
    

    So the file seems to be detected.

    I am using OpenSSH_7.6p1, OpenSSL 1.0.2k 26 Jan 2017, and Windows 10

    • Martin Prikryl
      Martin Prikryl over 6 years
      You need to specify what Windows build of OpenSSH are you using. There are many.
    • Jacek
      Jacek over 6 years
      OpenSSH_7.6p1, OpenSSL 1.0.2k 26 Jan 2017, and Windows 10. Added to question
    • Martin Prikryl
      Martin Prikryl over 6 years
      That's not an answer to my question (while still a useful information). I'm asking where did you get Windows build of OpenSSH.
    • Jacek
      Jacek over 6 years
      I think its from here sourceforge.net/projects/sshwindows Reading the reviews I think it was bad choice. If that is not the file I used then I can't find the original link.
    • Jacek
      Jacek over 6 years
      Also, after some time I used Windows Optional Features and installed OpenSSH Client (Beta). Thought it would solve my problem
    • Martin Prikryl
      Martin Prikryl over 6 years
      So which one are you using? Or do both have the problem?
    • Martin Prikryl
      Martin Prikryl over 6 years
      Afaik, Microsoft build of OpenSSH does not even support ProxyCommand. You get "Proxy connect is not supported in Windows yet", so you must be using a different one.
    • Jacek
      Jacek over 6 years
      It has to be the one from the link. And probably my PATH variable is corrupted
    • user2503775
      user2503775 about 5 years
      It works for us on git bash
  • Scott - Слава Україні
    Scott - Слава Україні almost 5 years
    (1) Really? You don’t need to quote or escape the space in the filename? (2) I don’t see how this can be an answer to the question when it doesn’t mention device1 or device2.
  • James
    James almost 5 years
    @Scott, check update, 1) I upload full log. 2)I don't have two machine to test OP, when i met how to use HTTP proxy in window open ssh issue, i search into this question, after i solved this, i think i can give some hit to OP, show ProxyCommand work fine.
  • PaulR
    PaulR about 3 years
    I was looking for this syntax, this answer helped me. I don't know why it was downvoted.