我试图通过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上没有什么特别的事情要做。