如何通过 SSH 门将 git 用户转发到 gitserver?

如何通过 SSH 门将 git 用户转发到 gitserver?

我试图通过 ssh gate 设置 ssh/git 访问,但谷歌搜索无果。基本上,我希望用户 git 与我的 ssh gate 的任何连接都转发到我的 ssh 服务器,以便我可以远程进行推送和拉取。但是,如果任何其他用户连接,我希望他们像往常一样登录。

internet--(git)-->gate--(git)--> git-server

internet--(user)-->gate

任何帮助或建议都将非常感激。

在客户端执行此操作的一种方法是将以下内容添加到 .ssh/config:

Host git.life-hack.org
    HostName          git.life-hack.org
    ProxyCommand      ssh [email protected] nc %h %p
    User              git

但我希望有一种方法可以在服务器端完成这个任务。

答案1

我假设您说的是 Linux 和 OpenSSH。如果不是,请告知。

我知道 git-server 不能直接从互联网访问。我认为您不能仅使用 SSH 自动完成您建议的操作。

我们假设 gate 位于 2.2.2.2(公网 IP),git-server 位于 10.10.10.10(RFC1918)

根据您到底想要实现什么以及有哪些限制,您可以:

1)让连接到 git-server 的用户首先转发一个端口:

ssh -N -L2222:10.10.10.10:22 [email protected]

然后他们可以以以下身份登录:

ssh -p2222 git@localhost

2)在 gate 上,你可以将与 2.2.2.2:2222 的连接转发到 10.10.10.10:22,这样你的用户就可以以 ssh -p2222 的身份登录[电子邮件保护]

这需要在门上执行一些命令:

# enable forwarding
echo -n 1 > /proc/sys/net/ipv4/ip_forward
# DNAT packets destined for 2.2.2.2:2222 to 10.10.10.10:22
iptables -A PREROUTING -d 2.2.2.2 -p tcp --dport 2222 -j DNAT --to-destination 10.10.10.10:22
# allow responses from 10.10.10.10 to get through
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
# allow forwarding connections to 10.10.10.10:22
iptables -A FORWARD -p tcp --dport 22 -d 10.10.10.10 -j ACCEPT

git-server 上没有什么特别的事情可做。

相关内容