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://[email protected]: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://[email protected]: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?

Brainfck
quelle
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 [email protected]:443/yourname/yourrepo/es nicht funktionieren. Aber wenn Sie dies tun, wird git remote set-url origin ssh://[email protected]: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
CB Bailey
quelle
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/
jdpf
quelle
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://[email protected]:11111/home/git/repo.git
Ricky
quelle
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.

Peter
quelle
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.

Greg Hewgill
quelle