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

我试图通过SSH门户设置SSH / GIT访问,但谷歌已经空了。 基本上我想要从用户git的任何连接到我的SSH入口被转发到我的SSH服务器,以便我可以远程进行推和拉。 但是,如果任何其他用户连接,我希望他们像往常一样login。

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

任何帮助或build议将不胜感激。

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

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

但是我希望能有办法做这个服务器端。

我假设你在谈论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] 

然后他们可以login为:

 ssh -p2222 git@localhost 

2)在大门口,你可以把2.2.2.2:2222的连接转发到10.10.10.10:22,这样你的用户就可以login了:ssh -p2222 [email protected]

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

 # 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上没有什么特别的事情要做。