git clone diferença de sintaxe ssh?

2

Configuração

Existe um host ( H1 ) executando o servidor gitlab-ce git dentro de um contêiner docker ( C1 ). O servidor OpenSSH do host é executado na porta 22 e fornece uma chave de host keyH . O contêiner gitlab fornece seu próprio serviço SSH que é publicado para hospedar como 10022:22 e fornece uma própria chave de host keyC .

Problema

Em um sistema cliente separado, ao chamar git clone git@H1:10022/<group>/<project> , espero obter conexão com o servidor SSH dentro do contêiner C1 . Na verdade, eu só obtenho conexão ao host H1 e recebo keyH apresentado (parece que a porta 22 do host é usada para clonagem). De causa, isso leva a um clone falido.

Mas

Geralmente (do mesmo cliente), puxando e empurrando, esse servidor git dockerized funciona ao definir um controle remoto como:

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

Portanto, parece haver uma diferença no protocolo entre ssh://git@H1... e git@H1... . Mas eu acho que o git está se comunicando via HTTP (S) ou SSH, apenas? Qual é a diferença / problema aqui?

Plataforma

  • Ubuntu 14.04.2 (nível de patch upstream de hoje)
  • git client 1.9.1
  • Dockerfile oficial do gitlab 7.13-stable
por ITL 30.07.2015 / 11:48

1 resposta

2

Do git-clone (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/

A sintaxe semelhante a scp não tem como especificar uma porta alternativa. O scp suporta a seleção de portas com a opção -P , mas essa opção não foi transferida para as ferramentas do git.

A sintaxe user@host:path do scp é uma imitação do rcp, e o rcp é anterior à web, por isso não segue as convenções de URL. Apenas coincidentemente parece uma URL sem feitiços.

git@H1:10022/group/project.git especifica o usuário git no host H1 e um caminho relativo 10022/group/project.git do diretório inicial desse usuário.

Para acessar um servidor ssh na porta 10022, você terá que usar a sintaxe ssh:// .

    
por 30.07.2015 / 15:37