Использование удаленного репозитория с нестандартным портом

Я настраиваю свой локальный проект GIT для удаленного хранилища. Удаленный репозиторий обслуживается через нестандартный порт (4019).

Но это не работает. Вместо этого я получаю следующее сообщение об ошибке:

ssh: connect to host git.host.de:4019 port 22: Connection refused
fatal: The remote end hung up unexpectedly
error: failed to push to 'ssh://root@git.host.de:4019/var/cache/git/project.git'

Мой локальный конфиг git выглядит следующим образом :

[core]
  repositoryformatversion = 0
  filemode = true
  bare = false
  logallrefupdates = true
[remote "origin"]
  url = ssh://root@git.host.de:4019/var/cache/git/project.git
  fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
  remote = origin
  merge = refs/heads/master

(Порт и хост являются заполнителями для фактического порта и хоста.)

Что не так с моей конфигурацией git?

123 git
13.10.2009 07:37:23
Похоже, если вы не указали явно ssh://перед URL, он думает, что это другой формат. так ssh://example.com:444/etc/это / и т.д. / на example.com через порт 44. В то время как example.com:444/etc/это / 444 / и т.д. / на example.com через порт 22.
Kzqai 26.07.2011 14:42:49
@Kzqai замечание важно. т.е. если вы делаете git remote set-url origin git@altssh.bitbucket.org:443/yourname/yourrepo/это, не будет работать. но, если вы git remote set-url origin ssh://git@altssh.bitbucket.org:443/yourname/yourrepo/это сделаете, это сработает
oak 28.11.2013 13:11:32
Для Google-фу - у меня была эта проблема с phabricator, когда он был настроен на нестандартный порт 2222. Теперь отсортировано!
user3791372 21.02.2017 09:36:40
5 ОТВЕТОВ
РЕШЕНИЕ

Если вы добавите что-то подобное в свой .ssh/config:

Host githost
HostName git.host.de
Port 4019
User root

тогда вы сможете использовать базовый синтаксис:

git push githost:/var/cache/git/project.git master
115
13.10.2009 07:49:15
Конфигурация SSH может быть обходным путем, но это меня заинтересовало, потому что man git-push говорит, что принятым форматом ssh url является ssh: // [user @] host.xz [: port] /path/to/repo.git /
gnud 13.10.2009 07:50:21
Я не уверен, что это может быть проблема конфигурации git / ssh, потому что я пытался отправить на адрес ssh: // fake @ localhost: 333 / fake и получил (как и ожидалось) «порт 333: соединение отказано».
CB Bailey 13.10.2009 08:00:56
Внимание всем, кто еще нуждается в этом. Синтаксис git clone ssh://username@hostname:333/~/repoдля пути относительно вашего домашнего каталога или git clone ssh://username@hostname:333/path/to/repoдля абсолютного пути
Brandon Wamboldt 5.07.2012 21:56:26
на машине с Windows: c: / windows / system32 / drivers / etc / hosts для установки имени хоста, если это необходимо (например, виртуальные машины / серверы)
user3791372 21.02.2017 09:36:27
Как это можно сделать, если у меня есть IP, а не имя хоста? Я спрашиваю, потому что мы еще не связали наше имя хоста с нашим ip.
ThisIsNotAnId 22.02.2019 23:14:18

SSH не использует :синтаксис при указании порта. Самый простой способ сделать это - отредактировать ~/.ssh/configфайл и добавить:

Хост git.host.de
  Порт 4019

Затем укажите просто git.host.deбез номера порта.

7
13.10.2009 07:42:34

Это позволит избежать вашей проблемы, а не исправить ее напрямую, но я бы порекомендовал добавить ~/.ssh/configфайл и получить что-то подобное

Host git_host
HostName git.host.de
User root
Port 4019

тогда вы можете иметь

url = git_host:/var/cache/git/project.git

и вы можете также ssh git_hostи scp git_host ...и все будет работать.

9
13.10.2009 07:43:12

Метод доступа к git на основе SSH может быть указан при <repo_path>/.git/configиспользовании полного URL-адреса или SCP-подобного синтаксиса, как указано в http://git-scm.com/docs/git-clone :

Стиль URL:

url = ssh://[user@]host.xz[:port]/path/to/repo.git/

Стиль SCP:

url = [user@]host.xz:path/to/repo.git/

Обратите внимание, что стиль SCP не допускает прямого изменения порта, вместо этого полагаясь на определение ssh_configхоста в вашем, ~/.ssh/configнапример:

Host my_git_host
HostName git.some.host.org
Port 24589
User not_a_root_user

Затем вы можете проверить в оболочке с:

ssh my_git_host

и измените свой URI в стиле SCP <repo_path>/.git/configследующим образом:

url = my_git_host:path/to/repo.git/
127
7.05.2015 22:08:19
Soooooo ... все, что действительно нужно, это добавить ssh: // перед URL, вероятно.
Kzqai 26.07.2011 14:40:23
Не знал, что вы можете указать ssh urls или что scp (по умолчанию) не разрешает номера портов. Хорошо знать.
Powerlord 10.10.2014 16:36:53
scp на самом деле разрешает номер порта (но ключ опции должен быть заглавной P):scp -P 2020 file/to/copy user@host:path/to/copy/file/to
Drew 25.05.2016 17:03:15
Для меня этого было достаточно, чтобы добавить ssh://к моему url. Если протокол отсутствует , то Git использует порт по умолчанию: 22. Спасибо.
mombip 17.05.2018 10:15:45

Попробуй это

git clone ssh://user@32.242.111.21:11111/home/git/repo.git
28
21.09.2015 01:32:36
Привет, Рики, у меня сработал синтаксис git clone ssh: // user @ machine: port / path-to-repo, где вы пишете, что машина должна быть пользователем, спасибо
rtrujillor 18.09.2015 10:34:07