Ответ 1
git clone ssh://[email protected]:[port]/gitolite-admin
Обратите внимание, что номер порта должен быть без квадратных скобок: []
Мой провайдер VPS рекомендует оставить мой SSH-порт на пользовательский номер порта, который они назначают по умолчанию (не 22). Дело в том, что, когда я знаю, я могу указать номер порта при создании удаленной конфигурации, похоже, что я не могу сделать то же самое при выполнении клонирования git. Я использую гитолит, поэтому команды клонирования выглядят так:
git clone [email protected]:gitolite-admin
Есть ли способ скрывать это от использования пользовательского номера порта ssh?
Я также должен упомянуть, что я запускаю cygwin на окнах. Я видел несколько мест, говорящих, чтобы добавить пользовательский порт в файл ~/.ssh/config
, например
Host mydomain.com
Port 12345
однако в cygwin этот файл, похоже, не существует.
git clone ssh://[email protected]:[port]/gitolite-admin
Обратите внимание, что номер порта должен быть без квадратных скобок: []
Если вам нужен относительный путь из вашего домашнего каталога (в любой 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
(Обновление: через несколько лет 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,...).
Приведенные выше ответы хороши и хороши, но не ясны для новых пользователей git, таких как я. Поэтому после некоторого расследования я предлагаю этот новый ответ.
Когда файл конфигурации не существует, вы можете создать его. Помимо port
файл конфигурации может включать в себя другую опцию конфигурации ssh: user
IdentityFile
и так далее, файл конфигурации выглядит как
Host mydomain.com
User git
Port 12345
Если вы работаете в Linux, позаботьтесь о том, чтобы у файла конфигурации было строгое разрешение: чтение и запись для пользователя и недоступность для других
Круто, единственное, что мы должны знать, это то, что в git есть два синтаксиса для ssh url
ssh://[[email protected]]host.xz[:port]/path/to/repo.git/
[[email protected]]host.xz:path/to/repo.git/
По умолчанию Gitlab и Github будут показывать синтаксис, похожий на scp url, и мы не можем указать пользовательский порт ssh. Таким образом, чтобы изменить порт ssh, нам нужно использовать стандартный синтаксис