Verwenden eines Remote-Repositorys mit nicht standardmäßigem Port


125

Ich richte mein lokales Git-Projekt für ein Remote-Repository ein. Das Remote-Repository wird an einem nicht standardmäßigen Port (4019) bereitgestellt.

Aber es funktioniert nicht. Stattdessen erhalte ich folgende Fehlermeldung:

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'

Meine lokale Git-Konfiguration lautet wie folgt :

[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

(Der Port und der Host sind Platzhalter für den tatsächlichen Port und Host.)

Was ist falsch an meiner Git-Konfiguration?


8
Sieht so aus, als ob Sie ssh://die URL nicht explizit vor die URL stellen, sondern es handelt sich um ein anderes Format. so ssh://example.com:444/etc/ist / etc / auf example.com über Port 44. Während example.com:444/etc// 444 / etc / auf example.com über Port 22.
Kzqai

5
@ Kzqai Bemerkung ist wichtig. dh wenn Sie es tun, wird git remote set-url origin git@altssh.bitbucket.org:443/yourname/yourrepo/es nicht funktionieren. Aber wenn Sie dies tun, wird git remote set-url origin ssh://git@altssh.bitbucket.org:443/yourname/yourrepo/dies funktionieren
Eiche

Für das Google-Fu - Ich hatte dieses Problem mit dem Phabricator, als ich ihn auf einen nicht standardmäßigen Port von 2222 eingestellt hatte. Jetzt sortiert!
user3791372

Antworten:


116

Wenn Sie so etwas in Ihre .ssh/config:

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

dann sollten Sie in der Lage sein, die grundlegende Syntax zu verwenden:

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

4
Eine SSH-Konfiguration könnte eine Problemumgehung sein, aber das hat mich interessiert, da man git-push sagt, dass das akzeptierte ssh-URL-Format ssh: // [user @] host.xz [: port] /path/to/repo.git ist /
Gnud

1
Ich bin nicht sicher, ob es sich möglicherweise um ein Problem mit der Konfigurations-Git / SSH-Version handelt, da ich versucht habe, auf eine SSH: // fake @ localhost: 333 / fake-Adresse zu pushen und (wie erwartet) "Port 333: Verbindung abgelehnt" erhalten habe.
CB Bailey

35
Achtung an alle, die das noch brauchen. Die Syntax ist git clone ssh://username@hostname:333/~/repofür einen Pfad relativ zu Ihrem Home-Verzeichnis oder git clone ssh://username@hostname:333/path/to/repofür einen absoluten Pfad
Brandon Wamboldt

auf einem Windows-Computer: c: / windows / system32 / drivers / etc / hosts, um bei Bedarf einen Hostnamen
festzulegen

Wie kann das gemacht werden, wenn ich eine IP und keinen Hostnamen habe? Ich frage, weil wir unseren Hostnamen noch nicht mit unserer IP verknüpft haben.
ThisIsNotAnId

129

Die SSH-basierte Git-Zugriffsmethode kann <repo_path>/.git/configentweder mithilfe einer vollständigen URL oder einer SCP-ähnlichen Syntax angegeben werden, wie unter http://git-scm.com/docs/git-clone angegeben :

URL-Stil:

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

SCP-Stil:

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

Beachten Sie, dass der SCP-Stil keine direkte Portänderung zulässt und sich stattdessen auf eine ssh_configHostdefinition in Ihrem ~/.ssh/configBeispiel stützt, z.

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

Dann können Sie in einer Shell testen mit:

ssh my_git_host

und ändern Sie Ihren SCP-URI <repo_path>/.git/configwie folgt :

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

1
Soooooo ... alles, was wirklich benötigt wird, ist wahrscheinlich das Hinzufügen eines ssh: // vor der URL.
Kzqai

1
Ich wusste nicht, dass Sie SSH-URLs angeben können oder dass scp (die Standardeinstellung) keine Portnummern zulässt. Gut zu wissen.
Powerlord

1
scp erlaubt tatsächlich Portnummer (aber der Optionsschlüssel muss Großbuchstabe P sein):scp -P 2020 file/to/copy user@host:path/to/copy/file/to
Drew

1
Für mich war es genug, um ssh://meine zu ergänzen url. Wenn das Protokoll fehlt, verwendet git den Standardport : 22. Danke dir.
Marek Podyma

28

Versuche dies

git clone ssh://user@32.242.111.21:11111/home/git/repo.git

1
Hallo Ricky, es hat bei mir mit der Syntax git clone ssh: // user @ machine: port / path-to-repo
funktioniert

9

Dies vermeidet Ihr Problem, anstatt es direkt zu beheben, aber ich würde empfehlen, eine ~/.ssh/configDatei hinzuzufügen und so etwas zu haben

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

dann kannst du haben

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

und du kannst auch ssh git_hostund scp git_host ...und alles wird klappen.


7

SSH verwendet die :Syntax bei der Angabe eines Ports nicht. Der einfachste Weg, dies zu tun, besteht darin, Ihre zu bearbeiten~/.ssh/config Datei und Folgendes hinzuzufügen:

Host git.host.de
  Port 4019

Geben Sie dann einfach git.host.deohne Portnummer an.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.