![如果用户 = git,是否转发传入的 SSH 连接?](https://linux22.com/image/684667/%E5%A6%82%E6%9E%9C%E7%94%A8%E6%88%B7%20%3D%20git%EF%BC%8C%E6%98%AF%E5%90%A6%E8%BD%AC%E5%8F%91%E4%BC%A0%E5%85%A5%E7%9A%84%20SSH%20%E8%BF%9E%E6%8E%A5%EF%BC%9F.png)
我有一个安装了 Firewalld 的 CentOS 7 最小版本,它充当公司的防火墙/路由器。在网络内部,我们有一个 git 服务器,我们将其命名为:gitlab-server。我希望它可以通过互联网访问,这样我们也可以从其他地方使用我们的存储库。我们通过 SSH 克隆存储库,出于安全原因,没有其他可用的东西。现在的问题是:如何使用防火墙将传入连接转发到特定 IP 地址,但前提是 SSH 的用户名为git
?
愚蠢的方式:我想执行git clone git@gitlab-server:myuser/myrepository.git
并能够在家完成。而且有时我必须推动,所以我git push origin master
也需要执行。
答案1
在启动 SSH 连接时,FirewallD 无法知道请求的用户 ID 是什么——它只知道有人正在启动与端口 22 的连接。
您可以通过在客户端上添加 SSH“ProxyCommand”来实现类似的功能,参考 https://superuser.com/questions/107679/forward-ssh-traffic-through-a-middle-machine:
# .ssh/config on hostA:
Host hostC
ProxyCommand ssh hostB -W %h:%p