web-dev-qa-db-ja.com

Windows上のOpenSSH構成ファイル-ProxyCommandが機能しない

WindowsでOpenSSHProxyCommandを使用して、device1を介してdevice2に接続しようとしています。 Device2は、ProxyCommandを使用せずにxxxxxポート転送と接続を要求します(ただし、最初にdevice1に接続してからdevice2に接続する必要があり、簡単なワンステップ接続が必要です)。

次のようにC:\ Program Files\OpenSSH\etc\ssh_configファイルを作成しました。

Host device1
Hostname xxx.xxx.xx.xx
User root

Host device2
ProxyCommand ssh -q device1 nc -q0 localhost xxxxx

今私がタイプするとき

ssh user@device2

私は得る

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

Linux OSでこれを確認しましたが、問題なく動作しました。何が悪いのか説明してもらえますか?

さらに、C:\ Program Files\OpenSSH\home\user\.ssh\configで構成を作成しようとしましたが、同じ結果が得られました。

設定ファイルを削除すると、

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

したがって、ファイルは検出されたようです。

OpenSSH_7.6p1、OpenSSL 1.0.2k、2017年1月26日、およびWindows10を使用しています

1
Jacek

私の問題は解決できませんが、解決できないので、私はこれを理解したと思います。

私の調査とおかげで https://superuser.com/users/213663/martin-prikryl ProxyCommandをサポートするWindows用のOpenSSHのビルドがないことを知りました(少なくとも私はできませんでした) 1つを見つけてください、そして彼らのサイトにはそのような情報があります)。

私が得た理由:

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

OpenSSHのビルドが悪いことが原因でした。からダウンロードしました

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

そして、そこのレビューによると、このビルドは壊れています!使用しないでください!このOpenSSHをアンインストールし、Webサイト(またはWindows 10のオプション機能)から公式のものをインストールした後、正しいエラーが発生しました:

Proxy connect is not supported in Windows yet
1
Jacek

私はWindowsでProxyJumpを使いたかったので、今日これと戦いました。問題は、Windowsのopensshが間違ったsshを呼び出す可能性があり、それが私には機能しなかったことにあるようです。

λ 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

私にとってうまくいくのは、ProxyCommandを明示的に指定することです。これが私のプロキシとターゲットのWindowsでの私の定義です。

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     

これはにつながります:

λ 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'                                       

お役に立てば幸いです。

3