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 = git@github.com:asdf/asdf.git

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.


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://git@github.com: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).


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://git@github.com: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

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.