Geben Sie den SSH-Port für Git an

17

Ich verwende für die meisten Server, zu denen ich eine Verbindung herstelle, einen nicht standardmäßigen SSH-Port (1234). Also habe ich in meiner ssh-Konfigurationsdatei:

Port 1234

Aber github.com verwendet Port 22. Wenn ich versuche, eine Verbindung zu github herzustellen, versucht es offensichtlich, Port 1234 zu verwenden. Im Moment muss ich meine ssh-Konfiguration bearbeiten, damit die Dinge funktionieren.

Hier ist ein Ausschnitt aus meiner Git-Konfiguration:

[remote "origin"]
        url = [email protected]:asdf/asdf.git
James Ward
quelle

Antworten:

26

Schauen Sie sich nur an, wie Sie Ihre ~ / .ssh / config- Datei korrekt einrichten (man 5 ssh_config). Sie können problemlos verschiedene Einstellungen für verschiedene Hosts festlegen. Um dein Problem zu lösen würdest du setzen

Host github.com
Port 22
Host *
Port 1234

Werfen Sie doch einen Blick auf die Manualpage ssh_config, auf der auf den ersten Seiten alles erklärt wird, was Sie wissen müssen.

daff
quelle
24

Das Einrichten eines Abschnitts in ~/.ssh/configist eine gute Lösung, es kann jedoch nützlich sein, eine andere Methode zu kennen.

Die übliche scp- ähnliche Syntax von user@host:pathhat keinen Platz für einen Port, aber Git unterstützt auch ein ssh:URL-Schema, mit dem der Port angegeben werden kann:

ssh://[email protected]:22/asdf/asdf.git

Eine ssh:URL unterstützt zwar die Portspezifikation, jedoch keine relativen Pfade (z. B. gibt es kein direktes Äquivalent zur SCP- ähnlichen Syntax, user@host:pathbei pathder nicht mit einem Schrägstrich begonnen wird).

GitHub behandelt relative und absolute Pfade identisch, so dass es für sie funktioniert, es funktioniert jedoch möglicherweise nicht für alle SSH-basierten Git-Repositorys. Für einfaches SSH-basiertes Hosting müssen Sie möglicherweise relative Pfade einfügen /home/username/oder /Users/username/von absoluten Pfaden wechseln. Einige Hosting-Systeme können möglicherweise überhaupt nicht mit absoluten Pfaden umgehen (obwohl ich solche mangelnde Unterstützung eher als Fehler bezeichne).

Chris Johnsen
quelle
Danke Chris. Ich mag diesen Pfad am liebsten, weil es nicht erforderlich ist, mit meiner ssh-Konfiguration zu mucken. Vielen Dank!
James Ward
1
Wenn der Server ein "nacktes" Repo hat, dann würde die Verbindungszeichenfolge eher so aussehen ssh://[email protected]:22/asdf/asdf(ohne das .git)
Xeoncross
3

(Liebe es, wenn ich die Antwort gleich nach der Frage finde.)

Ich habe meine ssh-Konfiguration so geändert, dass der Port für jeden Host angegeben wird, anstatt eine globale Einstellung zu sein:

Host asdf.com
    Port 1234

Host github.com
    User git
    Hostname github.com
    Port 22
James Ward
quelle
2

Fand diesen Link, und obwohl es hilfreich war, mein Blog-Eintrag könnte helfen, es zu klären:

https://prestongarrison.com/change-port-git-is-using-for-ssh/

Grundsätzlich denke ich, dass es viel besser ist, einfach Ihre .git / config-Datei zu bearbeiten und die Änderungen vorzunehmen.

Preston Garrison
quelle