【问题标题】:gitolite with non-default port具有非默认端口的 gitolite
【发布时间】:2011-11-12 00:37:20
【问题描述】:

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

git clone gitolite@server:repository

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

git clone gitolite@server:22:repository

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

【问题讨论】:

标签: ssh gitolite


【解决方案1】:

“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) manpage)。通过这样的条目,您可以创建一个“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 中使用“主机”参数可以很好地将所有这些封装在 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 就可以了。

    【讨论】:

      猜你喜欢
      • 2012-01-30
      • 1970-01-01
      • 2021-05-06
      • 2018-05-05
      • 2016-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多