Git Remote Add mit anderen SSH-Port

336

Wie kann ich in Git einen Remote-Ursprungsserver hinzufügen, wenn mein Host einen anderen SSH-Port verwendet?

git remote add origin ssh://user@host/srv/git/example
Juan Pablo
quelle

Antworten:

573

Sie können dies einfach tun:

git remote add origin ssh://user@host:1234/srv/git/example

1234 ist der verwendete SSH-Port

igorw
quelle
10
Danke. Nur eine Ergänzung: Verwenden Sie im
Pfadteil den
@Snicolas: Warum soll man keinen relativen Pfad benutzen?
Hannes
12
@Sincolas Es funktioniert, wenn Sie das Repo im Home-Verzeichnis des Benutzers haben: /home/someuser/git-repos/example.git -> ssh: // someuser @ <host>: <port> / ~ / git-repos / example.git . Übrigens: Sie erhalten ein <Name> .git Repo von Git Clone --bare <Adresse>
MartinL
@ Jameso Es ist ein absoluter Weg.
igorw
48
Beachten Sie, dass es nicht funktioniert, wenn Sie das Protokoll entfernen. Wenn Sie Folgendes versuchen, funktioniert dies nicht. git remote add origin user@host:1234/srv/git/example
Bijay Rungta
137

Sie müssen Ihre ~ / .ssh / config-Datei bearbeiten. Fügen Sie Folgendes hinzu:

Host example.com
    Port 1234

Eine schnelle Google-Suche zeigt einige verschiedene Ressourcen, die es detaillierter erklären als ich.

Bramp
quelle
16
Es hat bei mir funktioniert. Ich mag diesen Ansatz besser, als ihn in die Git-Fernbedienung zu stecken. Vielen Dank! Auf diese Weise muss kein absoluter Pfad angegeben werden.
Michael van Rooijen
Das funktioniert super. Auf diese Weise kann ich auch einen bestimmten Schlüssel anstelle der Standard-ID_RSA haben. Nicht nur das, mein Server ist wählerisch und mehr oder weniger muss es schnell genug richtig sein, was fehlschlägt, wenn Sie ein Passwort angeben. Also benutze ich das PasswordAuthentication noauch.
Alexis Wilke
4
Es ist besser, es auf der Fernbedienung zu haben, als es in der Konfigurationsdatei wie folgt zu verstecken: Wenn Sie alles an nur einem Ort haben, können Sie die unterschiedliche Portnummer nie vergessen und Sie können einfach die URL kopieren und einfügen, damit andere sie verwenden können.
MarcH
1
@MarcH Es kommt eigentlich auf die Situation an. Ich verwende gerne zufällige Portnummern für meine VPS-Instanzen. Wenn Sie den Port in der Konfigurationsdatei haben, können Sie diese Informationen den Mitarbeitern vorenthalten (wenn Sie über mehrere Fernbedienungen verfügen, unterscheidet sich der Remote-Host für die Bereitstellung vom internen Quellcode-Repo).
Ragunath Jawahar
@RagunathJawahar Ich denke nicht, dass die Verwendung von zufälligen Portnummern ein sehr häufiger Anwendungsfall ist.
MarcH
29

Die beste Antwort funktioniert bei mir nicht. Ich brauchte ssh://von Anfang an.

# does not work
git remote set-url origin [email protected]:10000/aaa/bbbb/ccc.git
# work
git remote set-url origin ssh://[email protected]:10000/aaa/bbbb/ccc.git
kujiy
quelle
17

Für diejenigen von euch, die das bearbeiten ./.git/config

[remote "external"]                                                                                                                                                                                                                                                            
  url = ssh://[email protected]:11720/aaa/bbb/ccc                                                                                                                                                                                                               
  fetch = +refs/heads/*:refs/remotes/external/* 
Evan Carroll
quelle
1
Perfekt. Eine Frage: Wie mache ich das für Submodule? Es scheint nicht zu funktionieren.
m4l490n
10

Anstatt das ssh://Protokollpräfix zu verwenden, können Sie mit einer kleinen Änderung weiterhin das herkömmliche URL-Formular für den Zugriff auf git über SSH verwenden. Zur Erinnerung lautet die herkömmliche URL :

git@host:path/to/repo.git

Um einen alternativen Port anzugeben, setzen Sie Klammern um das user@hostTeil, einschließlich des Ports:

[git@host:port]:path/to/repo.git

Wenn die Portänderung jedoch nur vorübergehend ist, können Sie git anweisen, einen anderen SSH-Befehl zu verwenden, anstatt die Remote-URL Ihres Repositorys zu ändern:

export SSH_GIT_COMMAND='ssh -p port'
git clone git@host:path/to/repo.git # for instance
Konrad Rudolph
quelle
2
Das Hinzufügen der eckigen Klammern um den git @ host: port hat bei mir wunderbar funktioniert. Ich verwende gitlab und auf diesem Server ist ein nicht standardmäßiger Port erforderlich, aber ich kann auch nicht den absoluten Pfad zum Repo verwenden (ich weiß es nicht). Vielen Dank
Thomas Le
1
Dies scheint mir die flexibelste Methode zu sein, da sie relative Pfade unterstützt und sich nicht auf ssh-Konfigurationen stützt
user2882096