找到关于这个简单问题的信息出奇地困难。
像许多人一样,我们在远程实例上运行 gitlabs/gogs 服务器。目前它侦听端口 10022。我们还在该实例上运行 ssh 来管理服务器。它侦听端口 22。
我们希望监听端口 22 的 ssh 服务器将 Git@ ONLY 的连接转发到 10022 上的 Git 服务器。
这样,当人们在本地使用 Git 时,他们就不必每次都手动指定我们远程 Git 服务器的端口。
我们应该怎么做?
答案1
我从来没有这样做过,但也许这符合你的要求:
您可以Match
为用户放置一个块,git
其中sshd_config
包含 ForceCommand
.强制命令可以是ssh登录真实服务器。您可以使用不带密码的公钥身份验证,因此用户可能不会注意到这一点。
答案2
更简单的方法是:
只需告诉您的用户将 git 服务器的别名添加到~/.ssh/config
.然后它们具有与 github 相同的便利性,并且您不必在服务器端执行一些奇怪的重定向。
例如:
# put into ~/.ssh/config
Host mygitlab
Hostname git.example.org
Port 10022
然后你的用户可以像这样克隆等:
$ git clone mygitlab:someuser/somerepo.git
答案3
解决方案在于 gitlab GUI:只需单击克隆按钮,然后粘贴到命令行中。
$ git clone ssh://[email protected]:10022/mygroup/myproject.git
您可以通过以下方式验证一切是否正确:
$ git remote -v
origin ssh://[email protected]:10022/mygroup/myproject.git (fetch)
origin ssh://[email protected]:10022/mygroup/myproject.git (push)