如何使用 Apache 反向代理设置 SSH 端口转发

Sei*_*lhi 5 apache git ssh proxy

我们在互联网和后端服务器之间设置了一个代理服务器。使用 VirtualHost 指令可以很好地管理 HTTP 请求。

我们在代理后面有一个 git 服务器,我们想只使用 ssh 访问存储库,但去掉 URL 中的端口号。

例如: ssh://backend.server.com:7999 --> ssh://backend.server.com

下面是apache代理的配置:

ProxyRequests 
ProxyPreserveHost On
ProxyVia Full
AllowCONNECT 7999
Run Code Online (Sandbox Code Playgroud)

AllowCONNECT 指令应该通过 ssh 处理端口 7999,但我不确定这个配置是否足够。

当我们通过 ProxyPass 和 ProxyPassReverse 管理 http 时,我需要配置什么来管理 ssh 协议?

谢谢。

eft*_*ft0 1

我可能会被误导,因为我不知道 Apache 如何处理不同类型流量的所有细节,但是,据我所知:

  • ProxyPass 和 ProxyPassReverse 负责http请求映射,而不是 ssh 路径。
  • 事实上,Apache 能处理 ssh 流量
  • 如果您使用的是 GNU/Linux 服务器,您只需设置一些 iptables nat 规则即可使通过某个端口(例如端口 22)到达该主机的流量“转发”到另一台主机。如果您想走该路线,则必须添加-t nat PREROUTING规则以要求将流量定向到其他主机,并添加-t nat POSTROUTING规则以确保将发送对此流量的响应到原始主机的数据以这种方式返回到同一台主机,以便它可以“变性”(除非该主机是流量从 ssh 服务器返回到创建 ssh 请求的主机时流出的路由) )。
  • 如果请求将到达 Windows 服务器,我不知道这是如何完成的。