Существует хост (H1), работающий gitlab-ce сервер мерзавца в контейнере докера (C1). Сервер OpenSSH хоста работает на порте 22 и обеспечивает ключ хоста keyH. gitlab контейнер предоставляет свою собственную услугу SSH, которая публикуется для хостинга как 10022:22
и обеспечивает собственный ключ хоста keyC.
В отдельной клиентской системе, при вызове git clone git@H1:10022/<group>/<project>
Я ожидаю делать пересадку к серверу SSH в контейнерном C1. Действительно, я только делаю пересадку для хостинга H1, и я получаю представленный keyH (кажется, что порт 22 из хоста используется для клонирования). Из причины, которая приводит к неудавшемуся клону.
Обычно (от того же клиента) получение по запросу и продвижение формы этот dockerized сервер мерзавца работает при определении удаленного как:
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...
. Но я думаю, что мерзавец связывается через HTTP (S) или SSH, только? Каково различие/проблема здесь?
Из 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/
В синтаксисе, подобном scp, нет никакого способа указать альтернативный порт. scp поддерживает выбор порта с помощью параметра -P
, но этот параметр не был перенесен в инструменты git.
Синтаксис user @ host: path
scp является имитацией rcp, а rcp появился раньше Интернета, поэтому не следует соглашениям об URL. Это только случайно выглядит так, будто бессхемный (скрытый) указывает пользователя git
на хосте H1
и относительный путь 10022 / group / project.git
из домашнего каталога этого пользователя.
Чтобы получить доступ к ssh-серверу на порту 10022, вам нужно будет использовать синтаксис ssh: //
.