是否可以通过带有标准ssh程序的ssh隧道来隧道https流量?


12

我可以通过ssh-tunnel重新路由(svn存储库的)https通信吗?

问题是,如果我仅创建一个隧道进行监听,则使用https的服务将无法正常工作:

ssh -L 12345:server.com:443 localhost

我还需要做其他事情吗?目的是建立https://PROJECT.googlecode.com/svn/隧道,其中PROJECT是项目名称。

Answers:


12

可以通过SSH端口转发来重定向HTTPS连接-但是,在主机名不匹配的情况下,SSL / TLS证书验证将失败:

您正在连接到https:// localhost:12345,但是服务器证书包含名称server.com。

与其直接转发HTTPS连接,不如我在要打开SSH连接的远程计算机上运行HTTP / SOCKS代理。然后设置要通过端口转发使用此代理的隧道程序。这将是一个干净的解决方案。

更新:似乎SVN可以使用HTTP代理,但不能使用SOCKS代理。如果要这样做,则需要在本地系统上附加一个“ socksifier”。请参阅Serverfault.com:如何使用ssh隧道设置用于颠覆的代理?


我是否可以实际使用这种方法:dltj.org/article/ssh-as-socks-proxy?因此,在googlecode的情况下,我将使用本地计算机->袜子计算机-> googlecode。并且此“ ssh -D”将在本地计算机上运行:ssh -D 12345 [用户名] @ [socks-计算机]。现在,我必须告诉svn在本地计算机上使用代理:12345。我还需要其他东西吗?
Juha

太酷了,我不知道OpenSSH已经包含了SOCKS代理。另请参阅我的最新答案。
罗伯特

6
通过将远程主机添加到IP地址为127.0.0.1的本地主机文件中,可以解决HTTPS证书问题。然后,您可以实际使用remotehost:12345地址,但流量仍将定向到SSH隧道。
JuhaPalomäki13年

@JuhaPalomäki,您应该将此添加为答案
elhefe

1

为了能够解决通过SSH隧道访问远程服务器时证书DNS不匹配的问题,我做了以下工作:

  1. 在腻子中配置SSH隧道,以便本地端口443将流量转发到远程服务器 (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. 现在,您可以使用 https://<remote.server.com>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.