2012-09-06 2 views
5

J'ai un dépôt git que je tire en utilisant un chemin similaire à ceci:GitExtensions + Putty via SSH sur le port personnalisé

git pull ssh://[email protected]:1234/path/to/repository.git 

Lorsque GitExtensions tente alors de tirer de la prise en pension à l'aide Plink, il fait cet appel: Cela finit par échouer car il envoie une commande ping au port n ° 22 et non au n ° 1234.

L'appel droit de faire serait

plink -T -P 1234 [email protected]:/path/to/repository.git 

Si je crée un alias « HostCom » dans mon ~/.ssh/config, il semble fonctionner correctement (connexion à # 1234) si je fais juste ceci:

plink -T [email protected] 

Mais dès que j'ajoute le chemin du trop git, il va à nouveau n ° 22. Une autre option que j'ai essayée est de créer une session dans le putty, appelons-la "hostPutty", et établissons le port par défaut là etc. La ligne du bas finit par être la même cependant: Impossible de combiner le chemin au repo de git avec port personnalisé.

Comment puis-je combiner toutes les pièces pour les faire fonctionner? Et comment OpenSSH peut-il gérer le problème, mais Putty ne peut pas? Le seul problème avec OpenSSH est qu'il me demande toujours le mot de passe de la clé privée à chaque tentative de connexion (et je ne veux pas créer de clé privée sans mot de passe).

Répondre

9

Vous l'avez compris.

Voici ce que m'a fait dans la mauvaise voie:

  • Ne créez pas de sessions Putty comme indiqué here
  • Ne pas utiliser d'alias d'hôte que vous pourriez avoir définis dans ~/.ssh/config

Voici comment le faire fonctionner:

  • faire toute évidence sûr GitExtens ions est configuré pour utiliser Putty, non OpenSSH
  • Assurez-vous plink.exe (celui disponible avec GitExtensions ou spécifiquement installé avec Putty) est dans un chemin sans espaces
  • Définissez votre variable env% GIT_SSH% pour pointer vers plink. exe (il peut pointer vers ssh.exe par défaut), assurez-vous qu'il n'y a pas d'apostrophes car la valeur sera utilisée "tel quel" (c'est pourquoi vous ne pouvez pas utiliser les espaces comme indiqué ci-dessus)
c:\>echo %GIT_SSH% 
    C:\tools\PuTTY\plink.exe 
  • Utilisez la commande "full" pour tirer, aucun alias d'hôte qui vous permettrait de ne pas spécifier le port etc., dans l'exemple ci-dessus. Si le port est manquant, et qu'il n'y a qu'un deux-points, git le traite comme un séparateur de chemins, et ssh comme un délimiteur de port (donc ils mordent chacun assez mal).

    ssh clone git: //[email protected]: 1234/chemin/vers/repository.git

Si vous le faites Git + Plink fait comprendre les choses bien!

Si vous ne le faites pas de cette façon, vous pourriez rencontrer toutes sortes de problèmes tels que:

  • Had% GIT_SSH% ont souligné à ssh.exe et utilisés alias d'hôte au lieu de chemin incl. Port
ssh.exe": hostPutty:path: no address associated with name 
    fatal: The remote end hung up unexpectedly 
  • apostrophes occasion en% GIT_SSH%
error: cannot spawn "C:\tools\PuTTY\plink.exe": No such file or directory 
    fatal: unable to fork 
0

Pour moi, je continuais à obtenir une erreur que le nom d'hôte n'existait pas. Après avoir essayé un tas de suggestions sur ceci et d'autres discussions, j'ai vérifié mon URL à distance et c'était le coupable. Si vous utilisez du mastic, assurez-vous qu'il commence par [email protected] pas https://github

Here's an examplpe of how to check this in git extensions

Questions connexes