Використання віддаленого сховища з нестандартним портом


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 config такий :

[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?


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-фу - у мене була ця проблема з phabricator, коли я встановив її на порт, який не використовується за замовчуванням 2222. Тепер, відсортовано!
користувач3791372

Відповіді:


116

Якщо ви помістите щось подібне до свого .ssh/config:

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

тоді ви повинні мати можливість використовувати базовий синтаксис:

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

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 / драйвери / etc / hosts для встановлення імені хоста, якщо потрібно (наприклад, віртуальних машин / серверів)
user3791372

Як це зробити, якщо я маю IP-адресу, а не ім'я хоста? Я запитую, тому що ми ще не пов’язали ім'я хоста з нашим ip.
ThisIsNotAnId

129

Метод доступу 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/

1
Soooooo ... все, що дійсно потрібно, - це додавання ssh: // перед URL-адресою, ймовірно.
Kzqai

1
Не розуміли, що ви можете вказати ssh URL-адреси або що 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без номера порту.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.