標準のsshプログラムでsshトンネルを介してhttpsトラフィックをトンネルすることは可能ですか?


12

ssh-tunnelを介して(svnリポジトリの)httpsトラフィックを再ルーティングできますか?

問題は、次のようにリッスンするためのトンネルを1つだけ作成すると、httpsを使用するサービスが機能しないことです。

ssh -L 12345:server.com:443 localhost

他に何かする必要がありますか?目的は、https://PROJECT.googlecode.com/svn/をトンネルすることですここで、PROJECTはプロジェクト名です。

回答:


12

HTTPS接続はSSHポート転送を介してリダイレクトできますが、SSL / TLS証明書の検証はホスト名が一致しないなどの場合に失敗します。

https:// localhost:12345に接続していますが、サーバー証明書にはserver.comという名前が含まれています。

HTTPS接続を直接転送する代わりに、SSH接続を開いているリモートコンピューターでHTTP(s)/ SOCKSプロキシを実行します。次に、ポートフォワーディングを介してこのプロキシを使用するようにトンネリングするプログラムを設定します。これはクリーンなソリューションになります。

更新:SVNはHTTPプロキシを使用できますが、SOCKSプロキシは使用できないようです。そうする場合は、ローカルシステムに追加の「socksifier」が必要です。Serverfault.comを参照してください:sshトンネルを使用してsubversionのプロキシを設定するにはどうすればよいですか?


このようなアプローチを実際に使用できますか:dltj.org/article/ssh-as-socks-proxy?したがって、googlecodeのケースでは、ローカルコンピュータ-> socks-computer-> googlecodeになります。そして、この「ssh -D」はローカルコンピュータで実行されます:ssh -D 12345 [username] @ [socks-computer]。ここで、svnにlocal-computer:12345でプロキシを使用するように指示する必要があります。他に何か必要ですか?
ユハ

OpenSSHにSOCKSプロキシがすでに含まれていることを知りませんでした。私の更新された回答も参照してください。
ロバート

6
リモートホストをローカルホストファイルにIPアドレス127.0.0.1で追加すると、HTTPS証明書の問題を回避できます。その後、実際にはremotehost:12345アドレスを使用できますが、トラフィックは引き続きSSHトンネルに送られます。
JuhaPalomäki2013

@JuhaPalomäkiあなたはこれを回答として追加する必要があります
elhefe

1

SSHトンネルを使用してリモートサーバーにアクセスしているときに、証明書のDNSの不一致の問題を回避できるようにするために、次のことを行いました。

  1. ローカルポート443がトラフィックをリモートサーバーに転送するように、SSHトンネルをパテに構成します。 (L443 : <remote.server.com>:443 )
  2. 次のC:\Windows\System32\drivers\etc\hostsようなエントリを追加するためにファイルを更新します127.0.0.1 <remote.server.com>
  3. HTTPプロキシサーバーを使用している場合(たとえば、企業プロキシから作業している場合)、<remote.server.com>システムプロキシからホストをバイパスします。
  4. これで、リモートサーバーのURLにアクセスできます https://<remote.server.com>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.