gitolite与非默认端口

时间:2011-09-07 10:10:51

标签: ssh gitolite

要克隆由gitolite管理的存储库,通常使用以下语法

git clone gitolite@server:repository

这告诉SSH客户端使用 gitolite 作为用户名连接到 server 的端口22。当我用端口号尝试它时:

git clone gitolite@server:22:repository

Git抱怨存储库 22:repository 不可用。如果SSH服务器使用不同的端口,应该使用什么语法?

2 个答案:

答案 0 :(得分:18)

“SCP风格”Git URL语法(user@server:path)不支持包含端口。要包含端口,您必须使用ssh://“Git URL”。例如:

ssh://gitolite@server:2222/repository

注意:与gitolite@server:repository相比,这提供了与远程端略有不同的存储库路径(绝对/repository而不是相对路径repository); Gitolite接受两种类型的路径,其他系统可能会有所不同。


另一种方法是在Host中使用~/.ssh/config条目(请参阅ssh_config(5) manpage)。使用这样的条目,您可以创建一个“SSH主机昵称”,其中包含服务器名称/地址,远程用户名和非默认端口号(以及您可能喜欢的任何其他SSH选项):

Host gitolite
    User     gitolite
    HostName server
    Port     2222

然后您可以使用非常简单的Git网址,例如gitolite:repository


如果您需要为多人记录(和/或配置)此内容,我会使用ssh://个网址,因为不涉及额外的配置。

如果这只是为了您(特别是如果您最终可能从同一服务器访问多个存储库),那么拥有SSH主机昵称来保存一些输入可能会很不错。

答案 1 :(得分:2)

这里详细解释:https://github.com/sitaramc/gitolite/blob/pu/doc/ssh-troubleshooting.mkd#_appendix_4_host_aliases

在〜/ .ssh / config中使用“host”para可以很好地将所有这些封装在ssh中,并为其提供一个简短易记的名称。例如:

host gitolite
    user git
    hostname a.long.server.name.or.annoying.IP.address
    port 22
    identityfile ~/.ssh/id_rsa

现在你可以简单地使用一个单词gitolite(这是我们在这里定义的主机别名),ssh将推断出它下面定义的所有细节 - 只需说ssh gitolite和git clone gitolite:reponame就可以了。 / p>