Git В пользовательском SSH-порту

Мой провайдер VPS рекомендует оставить мой SSH-порт на пользовательский номер порта, который они назначают по умолчанию (не 22). Дело в том, что, когда я знаю, я могу указать номер порта при создании удаленной конфигурации, похоже, что я не могу сделать то же самое при выполнении клонирования git. Я использую гитолит, поэтому команды клонирования выглядят так:

git clone [email protected]:gitolite-admin

Есть ли способ скрывать это от использования пользовательского номера порта ssh?

Я также должен упомянуть, что я запускаю cygwin на окнах. Я видел несколько мест, говорящих, чтобы добавить пользовательский порт в файл ~/.ssh/config, например

Host mydomain.com
    Port 12345

однако в cygwin этот файл, похоже, не существует.

Ответ 1

git clone ssh://[email protected]:[port]/gitolite-admin

Обратите внимание, что номер порта должен быть без квадратных скобок: []

Ответ 2

Если вам нужен относительный путь из вашего домашнего каталога (в любой UNIX), вы используете этот странный синтаксис:

ssh://[[email protected]]host.xz[:port]/~[user]/path/to/repo

Например, если репозиторий находится в /home/jack/projects/jillweb на сервере jill.com и вы входите в систему как jack, а sshd прослушивает порт 4242:

ssh://[email protected]:4242/~/projects/jillweb

И при входе в систему как jill (при условии, что у вас есть права доступа к файлу):

ssh://[email protected]:4242/~jack/projects/jillweb

Ответ 3

(Обновление: через несколько лет Google и Qwant "авиакомпании" по-прежнему присылают меня сюда при поиске "git нестандартный порт ssh" ) Вероятно, лучший способ в новых версиях git - использовать GIT_SSH_COMMAND ENV.VAR как:

GIT_SSH_COMMAND="ssh -oPort=1234 -i ~/.ssh/myPrivate_rsa.key" \ git clone [email protected]:/my/remote/git_repo/path

У этого есть дополнительное преимущество, позволяющее использовать любой другой подходящий вариант ssh (порт, priv.key, IPv6, PKCS # 11,...).

Ответ 4

  Приведенные выше ответы хороши и хороши, но не ясны для новых пользователей git, таких как я. Поэтому после некоторого расследования я предлагаю этот новый ответ.

1 в чем проблема с конфигурационным файлом ssh?

Когда файл конфигурации не существует, вы можете создать его. Помимо port файл конфигурации может включать в себя другую опцию конфигурации ssh: user IdentityFile и так далее, файл конфигурации выглядит как

Host mydomain.com
    User git
    Port 12345

Если вы работаете в Linux, позаботьтесь о том, чтобы у файла конфигурации было строгое разрешение: чтение и запись для пользователя и недоступность для других

2 как насчет пути ssh url?

Круто, единственное, что мы должны знать, это то, что в git есть два синтаксиса для ssh url

По умолчанию Gitlab и Github будут показывать синтаксис, похожий на scp url, и мы не можем указать пользовательский порт ssh. Таким образом, чтобы изменить порт ssh, нам нужно использовать стандартный синтаксис