要克隆由gitolite管理的存储库,通常使用以下语法
git clone gitolite@server:repository
这告诉SSH客户端使用 gitolite 作为用户名连接到 server 的端口22。当我用端口号尝试它时:
git clone gitolite@server:22:repository
Git抱怨存储库 22:repository 不可用。如果SSH服务器使用不同的端口,应该使用什么语法?
答案 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>