2009-10-13 4 views
100

Я настраиваю свой локальный проект 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://[email protected]:4019/var/cache/git/project.git' 

Мой местный мерзавец конфигурационный as follows: (. Порт и хост-заполнители для фактического порта и хоста)

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

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

+8

Похоже, если y ou явно не помещает 'ssh: //' перед URL-адресом, он считает, что это другой формат. поэтому 'ssh: //example.com: 444/etc /' является/etc/на example.com через порт 44. Принимая во внимание, что 'example.com: 444/etc /' is/444/etc/on example.com через порт 22. – Kzqai

+4

@Kzqai примечание важен. Если вы делаете «git remote set-url origin [email protected]: 443/yourname/yourrepo /' он не будет работать. но если вы делаете «git remote set-url origin» ssh: //[email protected]: 443/yourname/yourrepo/'это будет работать – oak

+0

Для Google-fu - у меня была эта проблема с фабрикатором, когда я он установил нестандартный порт 2222. Теперь, отсортированный! – user3791372

ответ

90

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

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

, то вы должны быть в состоянии использовать базовый синтаксис:

git push githost:/var/cache/git/project.git master 
+3

Конфигурация SSH может быть обходным путем, но это меня заинтересовало, потому что man git-push говорит, что принятый формат ssh url - это ssh: // [user @] host.xz [: port]/path/to/repo. git/ – gnud

+1

Я не уверен, это может быть проблема с конфигурацией git/ssh, потому что я пытался нажать на ssh: // fake @ localhost: 333/поддельный адрес и получил (как ожидалось) порт 333: Connection failed ». –

+28

Внимание всем, кому это еще нужно. Синтаксис: 'git clone ssh: // имя_пользователя @ hostname: 333/~/repo' для пути относительно вашего домашнего каталога или' git clone ssh: // имя_пользователя @ hostname: 333/path/to/repo' для абсолютный путь –

6

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

 
Host git.host.de 
    Port 4019 

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

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 ... и все будет работать.

103

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

URL стиль:

url = ssh://[[email protected]]host.xz[:port]/path/to/repo.git/ 

SCP стиль:

Обратите внимание, что стиль 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 

и изменить свой SCP-стиль URI в <repo_path>/.git/config как:

url = my_git_host:path/to/repo.git/ 
+0

Soooooo ... все, что действительно необходимо, это добавить ssh: // напротив URL, вероятно. – Kzqai

+0

Не понял, что вы можете указать URL-адреса ssh или что scp (по умолчанию) не разрешил номера портов. Хорошо знать. – Powerlord

+0

scp фактически разрешает номер порта (но ключ опции должен быть капиталом P): 'scp -P 2020 файл/to/copy user @ host: путь/to/copy/file/to' – Drew

19

Попробуйте это

git clone ssh://[email protected]:11111/home/git/repo.git 
+1

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