Git On Custom SSH Port

149

Mein VPS-Anbieter empfiehlt, meinen SSH-Port der benutzerdefinierten Portnummer zu überlassen, die er standardmäßig zuweist (nicht 22). Die Sache ist, während ich weiß, dass ich die Portnummer beim Erstellen einer Remote-Konfiguration angeben kann, scheint es, als könnte ich nicht dasselbe tun, wenn ich einen Git-Klon mache. Ich verwende Gitolite, daher klone ich Befehle wie folgt:

git clone [email protected]:gitolite-admin

Gibt es eine Möglichkeit, dies unter Verwendung der benutzerdefinierten SSH-Portnummer zu verbergen?

Ich sollte auch erwähnen, dass ich Cygwin unter Windows ausführe. Ich habe mehrere Stellen gesehen, die sagten, dass der benutzerdefinierte Port der ~/.ssh/configDatei wie hinzugefügt werden soll

Host mydomain.com
    Port 12345

In Cygwin scheint diese Datei jedoch nicht zu existieren.

Ryanzec
quelle
8
Der Pfadname der Datei befindet sich .ssh/config(nicht conf) im Home-Verzeichnis Ihres Benutzers. Es ist für den Basisbetrieb nicht erforderlich und daher nicht standardmäßig vorhanden. Sie müssen es erstellen. Versuchen Sie vim ~/.ssh/config(oder verwenden Sie Ihren bevorzugten, installierten Texteditor), ihn zu öffnen / zu erstellen.
Chris Johnsen
Unter Windows müssen Sie zum Lesen /Users/USERX/.ssh/configIhre HOMElokale Umgebung auf einstellen /Users/USERX.
Kenorb

Antworten:

327
git clone ssh://[email protected]:[port]/gitolite-admin

Beachten Sie, dass die Portnummer ohne eckige Klammern angegeben werden sollte: []

Christo
quelle
Dies funktioniert jedoch, Chris Chrissen Korrektur ermöglicht eine saubere URL bei Verwendung von benutzerdefinierten Portnummern
Ryanzec
6
:-) Wenn Sie mich fragen, ist die Git-URL-Syntax unrein und die oben genannten ist mehr normalisiert
Christo
Ich gebe zu, dass die von Ihnen angegebene Syntax aussagekräftiger ist, aber es ist ärgerlich, daran denken zu müssen, die benutzerdefinierte Portnummer hinzuzufügen. Diese Portnummer zu konfigurieren und sich dann nicht daran erinnern zu müssen, ist ein bisschen einfacher, aber für jeden das
Richtige
48
Beachten Sie, dass es nicht funktioniert, wenn Sie das Protokoll entfernen. Wenn Sie Folgendes versuchen, funktioniert dies nicht. git clone [email protected]:[port]/gitolite-admin
Bijay Rungta
1
unter Windows mit Plink scheint die funktionierende Syntax zu seingit clone ssh://[email protected]:port/home/user/gitolite-admin
Roman Plášil
18

Die obigen Antworten sind nett und großartig, aber für neue Git-Benutzer wie mich nicht klar. Nach einigen Nachforschungen biete ich diese neue Antwort an.

1 Was ist das Problem mit der SSH-Konfigurationsdatei?

Wenn die Konfigurationsdatei nicht vorhanden ist, können Sie eine erstellen. Außerdem kann portdie Konfigurationsdatei andere ssh-Konfigurationsoptionen enthalten: user IdentityFileusw. Die Konfigurationsdatei sieht folgendermaßen aus

Host mydomain.com
    User git
    Port 12345

Wenn Sie Linux ausführen, achten Sie darauf, dass die Konfigurationsdatei über strikte Berechtigungen verfügt: Lesen / Schreiben für den Benutzer und für andere nicht zugänglich

2 was ist mit der ssh url weg?

Es ist cool, das einzige, was wir wissen sollten, ist, dass es in git zwei Syntaxen für ssh url gibt

  • Standard-Syntax ssh://[user@]host.xz[:port]/path/to/repo.git/
  • scp wie Syntax [user@]host.xz:path/to/repo.git/

Standardmäßig zeigen Gitlab und Github die SCP-ähnliche Syntax- URL an, und wir können den benutzerdefinierten SSH-Port nicht angeben. Um den SSH-Port zu ändern, müssen wir die Standardsyntax verwenden

Jim Green
quelle
14

Wenn Sie einen relativen Pfad von Ihrem Home-Verzeichnis (unter UNIX) möchten, verwenden Sie diese seltsame Syntax:

ssh://[user@]host.xz[:port]/~[user]/path/to/repo

Beispiel: Wenn sich das Repo /home/jack/projects/jillwebauf dem Server befindet jill.comund Sie sich wie jackbeim sshdAbhören von Port 4242 anmelden:

ssh://[email protected]:4242/~/projects/jillweb

Und wenn Sie sich als jillanmelden (vorausgesetzt, Sie haben Dateiberechtigungen):

ssh://[email protected]:4242/~jack/projects/jillweb

Daniel Santos
quelle
Mann, das war für eine Weile verblüfft und war genau das, was ich wissen musste. Wissen Sie, wo dies dokumentiert ist?
Shaun Wilson
@ Shaun Wilson Sorry, ich erinnere mich nicht ganz. Aber ich brauchte eine Weile, um die Antwort zu finden, und dachte mir, ich sollte sie hier teilen, da dies eine meiner Sackgassen war.
Daniel Santos
1
Vielen Dank! Insbesondere wenn Sie einen Shared Hosting-Plan haben, ist der Teil ~ [Benutzer] wichtig. Dies hat mir geholfen, mein Repo zu klonen.
Jim Wilson
2
@ShaunWilson Die Pfadangabe ist ein Standard-UNIX-Pfad. Wenn Sie bei einem UNIX-System angemeldet sind, ist ~ eine Abkürzung für das Home-Verzeichnis. Dies ist sowohl nützlich, um viel Tipparbeit zu sparen, als auch, da sich das Home-Verzeichnis möglicherweise an nicht standardmäßigen Orten befindet. Dies funktioniert möglicherweise nicht auf einem Windows-Server.
Samuel Åslund
@Samuel Åslund Danke, ich habe meine Antwort aktualisiert. Ich vergesse oft Windows, weil ... nun, ich will nicht klebrig sein, aber es ist im Vergleich schrecklich. Dies ist jedoch eine wichtige Unterscheidung.
Daniel Santos
9

(Update: Einige Jahre später senden mich Google und Qwant "Airlines" immer noch hierher, wenn ich nach "git non-default ssh port" suche.) Ein wahrscheinlich besserer Weg in neueren git-Versionen ist die Verwendung von GIT_SSH_COMMAND ENV.VAR wie:

GIT_SSH_COMMAND="ssh -oPort=1234 -i ~/.ssh/myPrivate_rsa.key" \ git clone myuser@myGitRemoteServer:/my/remote/git_repo/path

Dies hat den zusätzlichen Vorteil, dass jede andere für SSH geeignete Option zugelassen wird (Port, priv.key, IPv6, PKCS # 11-Gerät, ...).

earizon
quelle