gitolite с нестандартным портом

для клонирования репозитория, управляемого gitolite, обычно используется следующий синтаксис

git clone gitolite@server:repository

Это говорит клиенту SSH подключиться к порту 22 сервер используя gitolite'у имя пользователя. Когда я пробую это с номером порта:

git clone gitolite@server:22:repository

Git жалуется, что репозиторий 22:репозиторий не имеется. Какой синтаксис следует использовать, если SSH-сервер использует другой порт?

2 ответов


синтаксис URL-адреса Git "SCP style" (user@server:path) не поддерживает включение порта. Чтобы включить порт, необходимо использовать ssh:// "в Git URL-адреса". Например:

ssh://gitolite@server:2222/repository

примечание: по сравнению с gitolite@server:repository, это представляет немного другой путь репозитория к удаленному концу (абсолютный /repository вместо относительного пути repository); Gitolite принимает оба типа путей, другие системы могут отличаться.


альтернативой является использование Host в своем ~/.ssh/config (см. ваш файле ssh_config(5) manpage). С такой записью вы можете создать "псевдоним хоста SSH", который включает имя/адрес сервера, имя удаленного пользователя и номер порта по умолчанию (а также любые другие параметры SSH, которые вам могут понравиться):

Host gitolite
    User     gitolite
    HostName server
    Port     2222

тогда вы можете использовать очень простые URL-адреса Git, такие как gitolite:repository.


если у вас есть документ (или настроить) это для нескольких людей, я бы пошел с ssh:// URLs, так как там нет дополнительной конфигурации.

если это только для вас (особенно если вы можете получить доступ к нескольким репозиториям с одного сервера), было бы неплохо иметь псевдоним хоста SSH, чтобы сохранить некоторые типы.


Это объясняется здесь очень подробно: https://github.com/sitaramc/gitolite/blob/pu/doc/ssh-troubleshooting.mkd#_appendix_4_host_aliases

использование" хоста " para в~/.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 и все будет работать.