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

125

Я настраиваю свой локальный проект 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?

brainfck
источник
8
Похоже, если вы явно не указали ssh://URL-адрес, он подумает, что это другой формат. так ssh://example.com:444/etc/и / etc / на example.com через порт 44. В то время example.com:444/etc/как / 444 / etc / на example.com через порт 22.
Kzqai
5
@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/это сделаете, это будет работать
дуб
Для Google-fu - у меня была эта проблема с фабрикатором, когда я установил порт не по умолчанию, равный 2222. Теперь отсортировано!
user3791372

Ответы:

116

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

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

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

git push githost:/var/cache/git/project.git master
CB Bailey
источник
4
Конфигурация SSH может быть обходным решением, но это меня заинтересовало, потому что man git-push говорит, что принятый формат URL-адреса ssh - ssh: // [user @] host.xz [: port] /path/to/repo.git /
gnud
1
Я не уверен, это может быть проблема с версией конфигурации git / ssh, потому что я попытался нажать на ssh: // fake @ localhost: 333 / поддельный адрес и получил (как и ожидалось) «порт 333: соединение отклонено».
CB Bailey,
35
Внимание всем, кому это еще нужно. Синтаксис предназначен git clone ssh://username@hostname:333/~/repoдля пути относительно вашего домашнего каталога или git clone ssh://username@hostname:333/path/to/repoдля абсолютного пути
Брэндон Вамбольдт
на машине с Windows: c: / windows / system32 / drivers / etc / hosts для установки имени хоста, если необходимо (например, виртуальные машины / серверы)
user3791372
Как это можно сделать, если у меня есть IP, а не имя хоста? Я спрашиваю, потому что мы еще не связали имя нашего хоста с нашим ip.
ThisIsNotAnId
130

Метод доступа 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/
jdpf
источник
1
Тааааааааааааааааааааааааааалов))) )аловина)))). Все, что действительно нужно, это добавить ssh: // перед url, наверное.
Kzqai
1
Не понимал, что вы можете указать URL-адреса ssh или что scp (по умолчанию) не разрешает номера портов. Хорошо знать.
Powerlord
1
scp фактически разрешает номер порта (но ключ опции должен быть заглавной P):scp -P 2020 file/to/copy user@host:path/to/copy/file/to
Дрю
1
Для меня достаточно было добавить ssh://к моему url. Если протокол отсутствует , то Git использует порт по умолчанию: 22. Спасибо.
Марек Подима
28

Попробуй это

git clone ssh://user@32.242.111.21:11111/home/git/repo.git
Рики
источник
1
Привет, Рики, у меня это сработало с синтаксисом git clone ssh: // user @ machine: port / path-to-repo, где вы пишете, что машина должна быть пользователем, спасибо
rtrujillor
9

Это позволяет избежать вашей проблемы, а не исправлять ее напрямую, но я бы рекомендовал добавить ~/.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 ...и все будет работать.

Питер
источник
7

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

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

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

Грег Хьюгилл
источник