git clone ssh 语法区别?

git clone ssh 语法区别?

设置

有一个主机(H1)在docker容器中运行gitlab-ce git服务器(C1)。主机的 OpenSSH 服务器在端口 22 上运行,并提供主机密钥密钥H.gitlab容器提供自己的SSH服务,发布到主机上10022:22,并提供自己的主机密钥关键点

问题

在单独的客户端系统上,当调用时,git clone git@H1:10022/<group>/<project>我希望连接到容器内的 SSH 服务器C1。事实上,我只能连接到主机H1我得到了密钥H出现(似乎主机的端口 22 用于克隆)。当然,这会导致克隆失败。

通常(从同一个客户端)在定义远程时,从这个dockerized git服务器进行拉取和推送是有效的:

git remote -v
origin  ssh://git@H1:10022/group/project.git (fetch)
origin  ssh://git@H1:10022/group/project.git (push)

看来,ssh://git@H1...和之间的协议存在差异git@H1...。但我认为 git 仅通过 HTTP(S) 或 SSH 进行通信?这里有什么区别/问题?

平台

  • Ubuntu 14.04.2(当今上游补丁级别)
  • git 客户端 1.9.1
  • gitlab 7.13-stable 官方Dockerfile

答案1

git 克隆(1):

GIT URLS
...
       The following syntaxes may be used with them:

       o   ssh://[user@]host.xz[:port]/path/to/repo.git/
...
       An alternative scp-like syntax may also be used with the ssh protocol:

       o   [user@]host.xz:path/to/repo.git/

类似 scp 的语法没有任何方式来指定备用端口。scp 支持使用-P选项进行端口选择,但该选项并未延续到 git 工具中。

scp 的语法user@host:path模仿了 rcp,而 rcp 的出现早于网络,因此它不遵循 URL 约定。它只是碰巧看起来像一个无方案 URL。

git@H1:10022/group/project.gitgit指定主机上的用户,以及该用户主目录的H1相对路径。10022/group/project.git

要访问端口 10022 上的 ssh 服务器,您必须使用语法ssh://

相关内容