現在、自宅のPCにHAProxyを設定していて、HTTPプロキシを介してアクセスしようとしています。現在、次のようにSSHログオンプロンプトにアクセスしています。
openssl s_client->proxytunnel->HTTP(S) proxy->remote HAProxy->SSH server
SSH-2.0-OpenSSH
プロンプトを受信するところまで来ていますが、何らかの理由でプロンプトでハングし、秘密鍵を通過しません。
クライアント側で実行しているコマンドと、組織のプロキシを使用するようにプロキシトンネルを設定する方法は次のとおりです。
proxytunnel -p httpproxy.organization.com:8080 -d ssh.homeserver.com:443 -a 7000
次に、次のようにopenssl
を実行しています。
openssl s_client -connect localhost:7000 -quiet -key /home/user/.ssh/id_rsa
しかし、何らかの理由で、証明書が通過していないように見えます。私はおそらく一歩を逃しているので、どんな提案も大歓迎です!
2つの完全に異なるプロトコルのクライアントを混乱させています。
openssl s_client
ツールは純粋にTLS(SSL)クライアントです。 HAproxyまたはstunnelが追加する可能性のあるTLSレイヤーを剥がすことができます。ただし、これが完了すると、任意のデータを一方の端からもう一方の端に転送するだけです。表示されているプロンプトは最初のSSHハンドシェイクであり、サーバーはそれに応答することを期待しています。したがって、TLSトンネルの上で[〜#〜] ssh [〜#〜]プロトコルを話すssh
のようなプログラムを実行する必要があります。
通常、ssh
はTCPを介してサーバーに直接接続しますが、ProxyCommand
オプションを使用して、別のプログラムを経由するように指示することもできます。
ssh -o ProxyCommand="openssl s_client -connect localhost:7000 -quiet" dummyname
SSHキーペアがある場合は、それをssh
のオプションとしても指定する必要があります。
ssh -i ~/.ssh/id_workplace -o ProxyCommand.....
(ただし、~/.ssh/id_rsa
にはこれは必要ありません–デフォルトで使用されます。)
S_clientオプション-cert
および-key
は、もちろんTLSサーバーへの認証用です。ただし、「-cert」として完全なX.509証明書が必要です。 SSHの場合のように、公開鍵だけでは不十分です。