使用非默认端口的gitolite

11

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

git clone gitolite@server:repository

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

git clone gitolite@server:22:repository

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


可能是重复的问题:git remote add with other ssh port - Chris Johnsen
2个回答

19

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

ssh://gitolite@server:2222/repository
注意:相比于使用 gitolite@server:repository,这里向远程端展示了略有不同的仓库路径(绝对路径 /repository 而非相对路径 repository );Gitolite 可以接受两种类型的路径,其他系统则可能有所不同。
另一种选择是在你的 ~/.ssh/config 中使用 Host 条目(请参阅您的 ssh_config(5) 手册页面)。通过这样的条目,你可以创建一个“SSH主机别名”,它包含了服务器名称/地址、远程用户名和非默认端口号(以及您可能喜欢的任何其他SSH选项):
Host gitolite
    User     gitolite
    HostName server
    Port     2222

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


如果您需要为多个人记录(和/或配置)此内容,则应使用ssh:// URL,因为不需要额外的配置。

如果只是给自己使用(特别是如果可能会从同一服务器访问多个存储库),那么使用SSH主机昵称可以节省一些打字。


2
这里有详细的解释:https://github.com/sitaramc/gitolite/blob/pu/doc/ssh-troubleshooting.mkd#_appendix_4_host_aliases。在~/.ssh/config中使用“host”参数可以很好地将所有内容封装在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,一切都会正常工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接