Korzystanie ze zdalnego repozytorium z niestandardowym portem

125

Konfiguruję lokalny projekt git dla zdalnego repozytorium. Zdalne repozytorium jest udostępniane na niestandardowym porcie (4019).

Ale to nie działa. Zamiast tego pojawia się następujący komunikat o błędzie:

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'

Moja lokalna konfiguracja git jest następująca :

[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

(Port i host to symbole zastępcze dla rzeczywistego portu i hosta).

Co jest nie tak z moją konfiguracją git?

brainfck
źródło
8
Wygląda na to, że jeśli nie umieścisz bezpośrednio ssh://przed adresem URL, będzie to inny format. tak samo jak ssh://example.com:444/etc// etc / na example.com przez port 44. Natomiast example.com:444/etc// 444 / etc / na example.com przez port 22.
Kzqai
5
Uwaga @Kzqai jest ważna. tzn. jeśli to zrobisz git remote set-url origin [email protected]:443/yourname/yourrepo/, nie zadziała. ale jeśli to zrobisz git remote set-url origin ssh://[email protected]:443/yourname/yourrepo/, zadziała
dąb
Dla Google-fu - miałem ten problem z phabricatorem, kiedy ustawiłem go na inny niż domyślny port 2222. Teraz posortowane!
user3791372

Odpowiedzi:

116

Jeśli umieścisz coś takiego w swoim .ssh/config:

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

wtedy powinieneś móc użyć podstawowej składni:

git push githost:/var/cache/git/project.git master
CB Bailey
źródło
4
Konfiguracja SSH może być obejściem, ale zainteresowało mnie to, ponieważ man git-push mówi, że akceptowany format adresu URL ssh to ssh: // [użytkownik @] host.xz [: port] / ścieżka/do/repo.git /
gnud
1
Nie jestem pewien, może to być problem z konfiguracją wersji git / ssh, ponieważ próbowałem wysłać do ssh: // fałszywy @ localhost: 333 / fałszywy adres i otrzymałem (zgodnie z oczekiwaniami) „port 333: odmowa połączenia”.
CB Bailey
35
Uwaga każdego, kto nadal tego potrzebuje. Składnia dotyczy git clone ssh://username@hostname:333/~/repościeżki względnej do katalogu domowego lub git clone ssh://username@hostname:333/path/to/repościeżki bezwzględnej
Brandon Wamboldt,
na komputerze z systemem Windows: c: / windows / system32 / drivers / etc / hosts, aby w razie potrzeby ustawić nazwę hosta (np. maszyny wirtualne / serwery)
user3791372
Jak mogę to zrobić, jeśli mam adres IP, a nie nazwę hosta? Pytam, ponieważ nie powiązaliśmy jeszcze naszej nazwy hosta z naszym adresem IP.
ThisIsNotAnId
129

Metodę dostępu git opartą na SSH można określić <repo_path>/.git/configza pomocą pełnego adresu URL lub składni podobnej do SCP, jak określono w http://git-scm.com/docs/git-clone :

Styl adresu URL:

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

Styl SCP:

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

Zauważ, że styl SCP nie pozwala na bezpośrednią zmianę portu, opierając się zamiast tego na ssh_configdefinicji hosta w twoim, na ~/.ssh/configprzykład:

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

Następnie możesz przetestować w powłoce za pomocą:

ssh my_git_host

i zmień swój identyfikator URI w stylu SCP w <repo_path>/.git/config:

url = my_git_host:path/to/repo.git/
jdpf
źródło
1
Soooooo ... wszystko, co jest naprawdę potrzebne, to prawdopodobnie dodanie ssh: // przed adresem URL.
Kzqai
1
Nie zdawałem sobie sprawy, że możesz podać adresy URL ssh lub że scp (domyślne) nie zezwala na numery portów. Dobrze wiedzieć.
Powerlord
1
scp faktycznie zezwala na numer portu (ale klucz opcji musi być duży P):scp -P 2020 file/to/copy user@host:path/to/copy/file/to
Drew
1
Dla mnie wystarczyło dodać ssh://do mojego url. Jeśli protokół brakuje następnie git używa domyślnego portu: 22. Dziękuję Ci.
Marek Podyma
28

Spróbuj tego

git clone ssh://[email protected]:11111/home/git/repo.git
Ricky
źródło
1
Cześć Ricky, zadziałało dla mnie ze składnią git clone ssh: // user @ machine: port / path-to-repo, gdzie piszesz maszyna musi być użytkownikiem, dzięki
rtrujillor
9

Pozwala to uniknąć problemu, zamiast naprawiać go bezpośrednio, ale polecam dodanie ~/.ssh/configpliku i coś takiego

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

wtedy możesz mieć

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

a można też ssh git_hosti scp git_host ...wszystko się ułoży.

Piotr
źródło
7

SSH nie używa :składni podczas określania portu. Najłatwiej to zrobić, edytując ~/.ssh/configplik i dodając:

Host git.host.de
  Port 4019

Następnie podaj tylko git.host.debez numeru portu.

Greg Hewgill
źródło