Spécifiez le port SSH pour Git

18

J'utilise un port ssh non standard (1234) pour la plupart des serveurs auxquels je me connecte. Donc dans mon fichier de configuration ssh j'ai:

Port 1234

Mais github.com utilise le port 22. Lorsque j'essaie de me connecter à github, il essaie évidemment d'utiliser le port 1234. Pour le moment, je dois modifier ma configuration ssh pour que les choses fonctionnent.

Voici un extrait de ma configuration git:

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

Réponses:

27

Jetez un œil à la façon de configurer correctement votre fichier ~ / .ssh / config (man 5 ssh_config). Vous pouvez facilement spécifier différents paramètres pour différents hôtes. Pour résoudre votre problème, vous devez définir

Host github.com
Port 22
Host *
Port 1234

Jetez un œil à la page de manuel de ssh_config, elle explique tout ce que vous devez savoir sur les premières pages.

daff
la source
24

La configuration d'une section dans ~/.ssh/configest une bonne solution, mais il peut être utile de connaître une autre méthode.

La syntaxe de type scp commune de user@host:pathn'a pas de place pour un port, mais Git prend également en charge un ssh:schéma d'URL qui peut être utilisé pour spécifier le port:

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

Alors qu'une ssh:URL prend en charge la spécification de port, elle ne prend pas en charge les chemins relatifs (par exemple, il n'y a pas d'équivalent direct à la syntaxe de type scp de user@host:pathpathne commence pas par une barre oblique).

GitHub traite les chemins relatifs et absolus de manière identique, donc cela fonctionne pour eux, mais cela peut ne pas fonctionner pour tous les référentiels Git basés sur SSH. Pour un hébergement SSH simple, vous devrez peut-être insérer /home/username/ou /Users/username/lors du passage de chemins relatifs à des chemins absolus. Certains systèmes d'hébergement peuvent ne pas gérer du tout les chemins absolus (bien que j'aurais tendance à appeler un tel manque de support un bug).

Chris Johnsen
la source
Merci Chris. J'aime mieux ce chemin car il ne nécessite pas de déblayage avec ma configuration ssh. Merci!
James Ward
1
fyi, si le serveur a un dépôt "nu" alors la chaîne de connexion ressemblerait plus ssh://[email protected]:22/asdf/asdf(sans le .git)
Xeoncross
3

(J'adore quand je trouve la réponse juste après l'avoir demandé.)

J'ai modifié ma configuration ssh pour spécifier le port pour chaque hôte au lieu d'être un paramètre global:

Host asdf.com
    Port 1234

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

J'ai trouvé ce lien, et bien qu'il ait été utile, mon article de blog pourrait aider à le clarifier:

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

Fondamentalement, je pense qu'il est préférable de simplement modifier votre fichier .git / config et d'apporter les modifications.

Garnison de Preston
la source