2009-10-13 8 views
100

Konfiguruję lokalny projekt git dla zdalnego repozytorium. Zdalne repozytorium jest obsługiwane na niestandardowym porcie (4019).Używanie zdalnego repozytorium z niestandardowym portem

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' 

Mój lokalny config git jest as follows: (. Port i gospodarz są zastępcze dla rzeczywistego portu i hosta)

[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 

Co jest źle z moją konfiguracją git?

+8

Wygląda, jakby nie umieszczaj jawnie 'ssh: //' przed url, uważa, że ​​jest to inny format. więc 'ssh: //example.com: 444/etc /' to/etc/na example.com przez port 44. Natomiast 'example.com: 444/etc /' to/444/etc/na example.com przez port 22. – Kzqai

+4

Uwaga @Kzqai jest ważna. np. jeśli zrobisz 'git remote set-url pochodzenie [email protected]: 443/yourname/yourrepo /' to nie zadziała. ale jeśli zrobisz polecenie 'git remote set-url origin ssh: //[email protected]: 443/yourname/yourrepo /' to zadziała – oak

+0

Dla Google-fu - miałem ten problem z phabricatorem, gdy miałem jest ustawiony na inny niż domyślny port 2222. Teraz posortowany! – user3791372

Odpowiedz

90

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

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

to powinieneś być w stanie korzystać z podstawową składnię:

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

Konfiguracja SSH może być obejściem problemu, ale mnie to zainteresowało, ponieważ man git-push mówi, że akceptowanym formatem ssh jest ssh: // [użytkownik @] host.xz [: port]/path/to/repo. git/ – gnud

+1

Nie jestem pewien, może to być problem z wersją konfiguracji git/ssh, ponieważ próbowałem przesłać do ssh: // fake @ localhost: 333/fałszywy adres i otrzymałem (zgodnie z oczekiwaniami) "port 333: Odmowa połączenia ". –

+28

Uwaga dla każdego, kto nadal tego potrzebuje. Składnia to 'git clone ssh: // nazwa_użytkownika @ nazwahosta: 333/~/repo' dla ścieżki względem twojego katalogu domowego lub' git clone ssh: // nazwa_użytkownika @ nazwahosta: 333/ścieżka/do/repo' dla absolutna ścieżka –

6

SSH nie Określając użyć składni : Port. Najprostszym sposobem, aby to zrobić, aby edytować plik ~/.ssh/config i dodać:

 
Host git.host.de 
    Port 4019 

Następnie określ tylko git.host.de bez numeru portu.

9

ten sposób unika się problemu, zamiast mocowania go bezpośrednio, ale polecam dodanie pliku ~/.ssh/config i mający coś takiego

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

wtedy można mieć

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

i można również ssh git_host i scp git_host ... i wszystko się ułoży.

103

SSH oparte metoda dostępu git można określić w <repo_path>/.git/config przy użyciu pełnego adresu URL lub składni SCP-podobne, jak określono w http://git-scm.com/docs/git-clone:

styl URL:

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

styl SCP:

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

Należy zauważyć, że styl SCP nie zezwala na bezpośrednią zmianę portu, polegając zamiast tego na ssh_config definicji hosta jonowy w swojej ~/.ssh/config takich jak:

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

Następnie można przetestować w powłoce z:

ssh my_git_host 

i zmienić swój styl SCP URI w <repo_path>/.git/config jak:

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

Soooooo ... wszystko, co naprawdę potrzebne, to dodanie ssh: // przed adresem URL prawdopodobnie. – Kzqai

+0

Nie zdawałem sobie sprawy, że możesz podać adresy URL ssh lub, że scp (domyślny) nie zezwalał na numery portów. Dobrze wiedzieć. – Powerlord

+0

scp faktycznie zezwala na numer portu (ale klucz opcji musi mieć wartość P): 'scp -P 2020 file/to/copy użytkownik @ host: ścieżka/do/kopia/plik/do' – Drew

19

Wypróbuj

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

Witaj, Ricky, działało to dla mnie za pomocą składni git clone ssh: // user @ machine: port/path-to-repo, gdzie piszesz maszynę musi być użytkownikiem, dzięki – rtrujillor

Powiązane problemy