git remote add avec un autre port SSH

336

Dans Git, comment puis-je ajouter un serveur d'origine distant lorsque mon hôte utilise un port SSH différent?

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

Réponses:

573

Vous pouvez simplement faire ceci:

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

1234 est le port ssh utilisé

igorw
la source
10
THX. Juste un complément: dans la partie chemin, utilisez un chemin absolu, pas un chemin relatif vers le répertoire personnel de l'utilisateur ...
Snicolas
@Snicolas: Pourquoi ne pas utiliser un chemin relatif?
Hannes
12
@Sincolas Cela fonctionne si vous avez le dépôt dans le répertoire personnel des utilisateurs: /home/someuser/git-repos/example.git -> ssh: // someuser @ <host>: <port> / ~ / git-repos / example.git . btw: vous obtenez un <name> .git repo par git clone --bare <adress>
MartinL
@Jameo Il est un chemin absolu.
igorw
48
Notez que cela ne fonctionnera pas si vous supprimez le protocole. Par exemple, si vous essayez ce qui suit, cela ne fonctionnera pas. git remote add origin user@host:1234/srv/git/example
Bijay Rungta
137

Vous devez modifier votre fichier ~ / .ssh / config. Ajoutez quelque chose comme ceci:

Host example.com
    Port 1234

Une recherche rapide sur Google montre quelques ressources différentes qui l'expliquent plus en détail que moi.

bramp
la source
16
Cela a fonctionné pour moi. J'aime mieux cette approche que de la coller dans la télécommande git. Merci! Pas besoin non plus de spécifier un chemin absolu.
Michael van Rooijen
Cela fonctionne très bien. De cette façon, je peux également avoir une clé spécifique au lieu de l'id_rsa par défaut. Non seulement cela, mon serveur est difficile et plus ou moins vous devez le faire assez rapidement, ce qui échoue si vous incluez un mot de passe. Donc j'utilise PasswordAuthentication noaussi le.
Alexis Wilke
4
Il est préférable de l'avoir dans la télécommande que de le cacher dans le fichier de configuration comme ceci: lorsque vous avez tout en un seul endroit, vous ne pouvez jamais oublier le numéro de port différent et vous pouvez simplement copier et coller l'URL pour que quelqu'un d'autre puisse l'utiliser.
MarcH
1
@MarcH Cela dépend en fait de la situation. J'aime utiliser des numéros de port aléatoires sur mes instances VPS. Avoir le port à l'intérieur du fichier de configuration est une façon de cacher ces informations aux collaborateurs (c'est lorsque vous avez plusieurs télécommandes, l'hôte distant de déploiement est différent du référentiel de code source interne).
Ragunath Jawahar
@RagunathJawahar Je ne pense pas que l'utilisation de numéros de port aléatoires soit un cas d'utilisation très courant.
MarcH
29

La meilleure réponse ne fonctionne pas pour moi. J'avais besoin ssh://dès le début.

# 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
la source
17

Pour ceux d'entre vous qui éditent le ./.git/config

[remote "external"]                                                                                                                                                                                                                                                            
  url = ssh://[email protected]:11720/aaa/bbb/ccc                                                                                                                                                                                                               
  fetch = +refs/heads/*:refs/remotes/external/* 
Evan Carroll
la source
1
Parfait. Une question cependant, comment dois-je procéder pour les sous-modules? Ça n'a pas l'air de marcher.
m4l490n
11

Plutôt que d'utiliser le ssh://préfixe de protocole, vous pouvez continuer à utiliser le formulaire URL conventionnel pour accéder à git via SSH, avec une petite modification. Pour rappel, l'URL conventionnelle est :

git@host:path/to/repo.git

Pour spécifier un autre port, placez des crochets autour de la user@hostpièce, y compris le port:

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

Mais si le changement de port est simplement temporaire, vous pouvez dire à git d'utiliser une commande SSH différente au lieu de changer l'URL distante de votre référentiel:

export SSH_GIT_COMMAND='ssh -p port'
git clone git@host:path/to/repo.git # for instance
Konrad Rudolph
la source
2
L'ajout de crochets autour de git @ host: port a parfaitement fonctionné pour moi. J'utilise gitlab et sur ce serveur, il nécessite un port non standard mais je ne peux pas non plus utiliser le chemin absolu vers le dépôt (je ne le sais pas). Merci
Thomas Le
1
Cela me semble être la méthode la plus flexible car elle prend en charge les chemins relatifs et ne s'appuie pas sur les
configurations