Vscode: Git: supporte git avec mot de passe de clé privée

Créé le 13 oct. 2016  ·  229Commentaires  ·  Source: microsoft/vscode

  • Version VSCode: 1.6.0
  • Commit e52fb0bc87e6f5c8f144e172639891d8d8c9aa55
  • Date 2016-10-10T18: 37: 40.189Z
  • Shell 1.3.7
  • Moteur de rendu 52.0.2743.82
  • Nœud 6.5.0
  • Version du système d'exploitation: Windows 7 Pro

Étapes à suivre pour reproduire:

  1. Créer une paire de clés publique-privée avec protection par mot de passe
  2. ajoutez-les à votre compte github
  3. configurez git pour utiliser le fichier de clé privée
  4. essayez de pousser quelque chose avec git

Résultat:

git pull
Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,password).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
feature-request git help wanted

Commentaire le plus utile

Une solution de contournement pour Windows 10:

  1. Faites en sorte que Git utilise OpenSSH fourni avec Windows au lieu de celui fourni avec Git.
    git config --global core.sshCommand "C:/Windows/System32/OpenSSH/ssh.exe"
  2. Configurez le service ssh-agent (pas celui fourni avec git) pour qu'il s'exécute automatiquement.
    Ouvrez le Gestionnaire des tâches, onglet Services, cliquez sur Ouvrir les services.
    Trouvez l'agent d'authentification OpenSSH, ouvrez les propriétés, définissez le type de démarrage sur Automatique, appuyez sur OK.
    Démarrez également le service ou redémarrez votre ordinateur.
  3. Ajoutez votre clé protégée par mot de passe à l'agent.
    ssh-add
    Il doit automatiquement récupérer les clés stockées dans C: \ Users \% USERNAME% \. Ssh, où ssh-keygen les crée.
    Entrez votre (vos) mot (s) de passe à l'invite.

Remarque: Si, lors de l'installation de Git pour Windows, vous avez sélectionné l'option pour ajouter des commandes bash à PATH, la commande ssh-add peut pointer vers le mauvais exécutable. Si tel est le cas, vous pouvez exécuter manuellement celui inclus pour ajouter votre clé à l'agent:
C:\Windows\System32\OpenSSH\ssh-add.exe

Désormais, l'agent d'authentification OpenSSH intégré s'exécutera au démarrage avec votre clé protégée par mot de passe déverrouillée, et Git utilisera Windows OpenSSH au lieu de la sienne. Donc pas besoin de taper votre mot de passe à chaque fois, pas besoin de démarrer manuellement l'agent ssh, et pas besoin de démarrer VS Code à partir de la ligne de commande.

Tous les 229 commentaires

Cela fonctionne-t-il à partir de la ligne de commande? Comment configurez-vous exactement git pour utiliser le fichier de clé privée?

Cela fonctionne à partir de la ligne de commande. En fait, j'ai configuré git via tortoise git - donc je suppose que tout est bien fait.

image

Comment lancez-vous la ligne de commande? Quelle ligne de commande?

J'utilise git bash (MINGW64) sur Windows.

Droite. Donc, nous devrons peut-être ajouter un paramètre git.sshkey , comme Tortoise.

Avec Windows 10, Git 2.10.1.

J'ai eu des problèmes lors de l'utilisation de git sur vscode avec mon serveur de production, j'ai donc créé un serveur de test.
Au début, avec un utilisateur protégé par mot de passe (pas de clés), mêmes erreurs - pas de fenêtres contextuelles d'invite d'informations d'identification ou quoi que ce soit.
En utilisant le terminal à l'intérieur de vscode ou de n'importe quel cmd aléatoire, je peux pousser, tirer et cela fonctionne - demande un mot de passe. Avec vscode, je ne peux préparer que des commits. Tirer, pousser, synchroniser tous échouent car ils ne demandent pas de mot de passe.

En production, j'utilise une clé protégée par mot de passe avec un port à 5 chiffres différent pour ssh.
Aussi, j'ai quelques clés ssh différentes (y compris git) sur une machine ...

@joaomoreno Pourquoi l'avez-vous déplacé dans l'arriéré?

Juste des priorités de planification. Vous pouvez cependant tenter une pull request. 👍

En attendant 😉

Une mise à jour pour ceci? J'ai le même problème et c'est assez ennuyeux 😞

@joaomoreno J'essaye de tenter ça. Cela m'affecte personnellement maintenant que je suis récemment passé à la sécurité basée sur les clés.

Les gens peuvent suivre mes progrès ici .

@hashhar C'est génial! 🍻 Faites-moi savoir si vous heurtez des murs.

@joaomoreno J'étais en train de chercher les endroits à changer et j'ai trouvé ce qui suit:

Scénario actuel:

  • Si vous avez un agent ssh en cours d'exécution avec la clé ajoutée, vous pouvez effectuer toutes les opérations sauf clone (car node.url.parse () ne fonctionne pas pour les urls ssh).
  • Si ssh-agent n'exécute pas toutes les commandes git qui impliquent une activité réseau (extraction, clonage, push, pull) échouent. L'erreur est générée par git.exe.

Changements proposés:

  • [x] Non nécessaire, voir le commentaire suivant Ajoutez une surcharge à url.parse () (où?) pour vous assurer que les urls ssh sont également reconnues.
  • [x] Ajoutez une clé de configuration, git.sshkey (emplacement de la clé privée (limité aux clés openssh pour le moment - car git les supporte nativement, examinera les clés putty plus tard)).
  • [] Ajoutez un conditionnel où l'extension git est initialisée pour démarrer un agent SSH (si l'un n'est pas en cours d'exécution) et ajoutez la clé. Devra d'une manière ou d'une autre (quickpick?) Demander à l'utilisateur de saisir sa phrase de passe. ( Est-ce que nous tuons l'agent lorsque nous fermons vscode? )

Aucune autre modification ne sera nécessaire (d'après ce que j'ai vu actuellement) car la communication avec le point de terminaison git est gérée par git.exe et non par vscode.

D'accord, mon problème avec l'analyse d'url. On dirait que node accepte des URL comme git+ssh://[email protected]:hashhar/vscode ou ssh://[email protected]:hashhar/vscode mais la partie ssh doit être explicitement mentionnée.

Que dois-je faire à ce sujet, si vscode doit juste ajouter comme par magie ssh avant les URL qui correspondent au format [email protected]:username/repo . Ou échouer silencieusement? (Cela nécessite toujours l'exécution de ssh-agent).

Ping @joaomoreno. Si vous pouvez trouver l'heure, commentez les problèmes ci-dessus que j'ai. J'ai actuellement piraté une preuve de concept en démarrant l'agent ssh contre une clé privée. Cela fonctionne mais un peu de polissage est encore nécessaire.

@hashhar Désolé pour le retard ... Je suis en fait assez occupé en ce moment. N'hésitez pas à créer le PR et à déplacer la discussion là-bas, nous essaierons de le faire entrer en mars.

Il ne suffit pas de démarrer ssh-agent, vous devez également ajouter les variables d'environnement SSH_AGENT_PID et SSH_AUTH_SOCK pour que Git sache où chercher.

Vous devrez ensuite soit stocker cela quelque part, afin qu'il puisse être utilisé entre les redémarrages de VSCode, soit redémarrer ssh-agent à chaque fois que vous redémarrez VS Code.

Ce serait bien s'il pouvait partager cela avec Posh-Git (le module Powershell Git), qui stocke les valeurs dans ([System.IO.Path]::GetTempPath()) ".ssh\$key.env" - mais cela vaut peut-être la peine de parler à cette équipe pour s'assurer que cet emplacement est quelque chose qu'ils heureux d'être verrouillé.

@andrewducker Merci beaucoup pour votre contribution supplémentaire. Je n'ai pas travaillé là-dessus au rythme que je voudrais à cause de mes mi-sem. J'y reviendrai d'ici la fin de la semaine. Je vais informer l'équipe Posh-Git.

@joaomoreno J'ai recommencé à travailler là-dessus. Mon approche précédente était trop naïve et n'a pas fonctionné. J'essaie actuellement de trouver un endroit approprié pour ajouter une fonction qui est appelée avant d'exécuter une commande git (c'est-à-dire lorsque VSCode démarre et que le fournisseur git se charge). Où dois-je faire cela? Je n'arrive pas à comprendre quel est le flux de code.

Y a-t-il un morceau de code qui est appelé chaque fois qu'un appel Git est effectué? Si tel est le cas, vous pouvez demander le mot de passe la première fois qu'il est appelé.

En y regardant, mettre un hook dans Git.ts serait la voie à suivre, à l'intérieur de toutes les fonctions qui signifieraient se connecter au serveur. (Comme aller chercher, tirer, pousser, etc.).

(Je proposerais de le faire moi-même, mais je n'ai jamais rien écrit en TypeScript, ni travaillé avec des extensions VSCode, donc c'est juste basé sur le fait que je fouille brièvement le code sur GitHub.)

Le plus gros problème est que sous Windows, les variables SSH_AUTH_SOCK et SSH_AUTH_PID peuvent être disponibles pour tous les processus ou juste une seule session de console selon la façon dont ssh-agent a été démarré. Il est donc beaucoup plus facile de démarrer un agent ssh à partir de VSCode au lieu de réutiliser ceux existants (au moins sous Windows).

En termes pratiques, cela signifie que l'utilisateur devra fournir sa phrase secrète UNE FOIS avant que la première opération Git ne soit effectuée. Les instances VSCode peuvent partager les agents ssh entre elles si nous pouvons définir un emplacement codé en dur où SSH_AUTH_SOCK allait être créé afin que d'autres instances VSCode puissent les regarder avant de démarrer leurs propres agents.

Cela s'avère être un défi assez intéressant pour moi. 😃

Ce serait également une option viable si vscode honorait un SSH_AUTH_SOCK déjà existant. On me demande mon mot de passe de clé privée même si ssh-agent est déjà en cours d'exécution sur mon système. Fait intéressant, je peux utiliser git dans le terminal vscode intégré (shell) bien. Le plugin git et le terminal doivent se comporter de la même manière pour faciliter le débogage.

EDIT: Je suis sur le commit f9d0c687ff2ea7aabd85fb9a43129117c0ecf519
EDIT2: Cela fonctionne lorsque j'exécute vscode à partir d'un bash au lieu d'utiliser le lanceur de mon gestionnaire de fenêtres.

Oui - démarrer VSCode à partir d'une session qui les a déjà définis dans l'environnement fonctionne parfaitement (lancement à partir de Powershell dans mon cas). Donc, s'ils sont déjà définis, il n'y a rien à faire.

des progrès à ce sujet?

@ezamelczyk Non. Je suis désolé. Je n'ai pas pu y consacrer suffisamment de temps en raison de mes études universitaires. Merci de me le rappeler. J'essaierai de faire du travail la semaine prochaine.

Salut à tous,

Malheureusement, j'ai le même genre de problème ... 😭
Voici ma config et le scénario détaillé pour la reproduire.
J'espère que ça aidera un peu!

Système d' exploitation : macOSX Sierra version 10.24.4
VScode : Version 1.11.1

Dans mon dossier .ssh , j'ai ces fichiers:

  • config
  • id_rsa_github
  • id_rsa_github.pub
  • id_rsa_gitlab
  • id_rsa_gitlab.pub
  • know_hosts

Le contenu du fichier de configuration :

Host gitlab.com
  HostName gitlab.com
  User git
  RSAAuthentication yes
  IdentityFile ~/.ssh/id_rsa_gitlab

Host github.com
  HostName github.com
  User git
  RSAAuthentication yes
  IdentityFile ~/.ssh/id_rsa_github

Je peux commettre et pousser sans aucun problème depuis la ligne de commande et la tour.
Mais je ne peux pas dans VScode ... il me renvoie ce message de sortie à chaque fois que j'essaye:

git pull
Autorisation refusée (publickey).
fatal: impossible de lire à partir du référentiel distant.
Veuillez vous assurer que vous disposez des droits d'accès appropriés
et le référentiel existe.

Merci de votre aide

Pour moi, c'est vraiment un bloqueur. J'aime VSC, mais sans la possibilité d'utiliser git, je ne peux pas l'utiliser comme éditeur quotidien.

@MartinZubek @jmbelloteau Est-ce que son lancement à partir d'une ligne de commande où vous avez démarré l'agent SSH le

@andrewducker

Depuis le terminal, je me connecte à mon Git distant avec la commande:

ssh -T [email protected]

... alors j'ai ouvert VScode à partir du terminal avec la commande:

code

Quand je pousse depuis VScode, j'obtiens toujours la même erreur ...
C'est vraiment un problème!

@MartinZubek même ici, VScode est incroyable, bien plus que Atom.
J'adore la vitesse du terminal intégré à l'UX et la possibilité d'utiliser git.

Mais nous avons également besoin d'une connexion à GIT distant pour être sécurisée. Cela signifie que le mot de passe protège SSH ...

Ça fait sens ... non?

@andrewducker En effet, cela fonctionne pour moi de cette façon. :)
Y a-t-il une chance que cela fonctionne nativement sans avoir besoin de le démarrer à partir de la ligne de commande?

Salut @MartinZubek ,

Qu'est-ce qui fonctionne pour vous? Peux-tu être plus précis? 😄

@jmbelloteau Bien sûr, cela ne se termine plus par l'erreur "Permission refusée (publickey)" et git pull / push fonctionne comme ~ / .ssh / config et chaque fois que la phrase de passe de la clé est nécessaire, cette fenêtre apparaît:
http://imgur.com/wpExMMP

@MartinZubek pour que vous puissiez pousser à partir de VScode?! C'est génial...
L'avez-vous lancé à partir d'une ligne de commande où vous avez démarré l'agent SSH?
Si oui comment?
Je ne comprends pas pourquoi cela ne fonctionne pas sur mon environnement

@jmbelloteau Oui, j'ai lancé vscode depuis la ligne de commande que j'utilise (c'est le git-bash.exe qui est livré avec git pour windows par défaut, pour être exact). Je n'ai pas eu besoin de démarrer l'agent ssh ou quoi que ce soit manuellement. Je suppose que cela démarre automatiquement avec git-bash ou quelque chose comme ça.

@MartinZubek bon sang ...

Même comme tu l'as dit, ça ne marche pas pour moi 😭

@vscodeteam Un plan pour gérer ce problème?

@jmbelloteau C'est trop difficile. C'est aussi assez aléatoire. Ce que j'ai essayé de mettre en œuvre était de démarrer un agent ssh sous le processus de nœud afin que les variables env soient disponibles pour VSCode, mais cela signifie que plusieurs instances VSCode auront besoin de plusieurs agents ssh et nécessiteront toujours la saisie de phrases de passe à chaque fois.

Je cherche un moyen d'utiliser la variable SSH_AUTH_SOCK à la place. Il fonctionne sous Linux mais ne l'a pas encore testé sur Windows.

Il y a le problème supplémentaire d'OpenSSH vs Windows Powershell SSH vs PuTTY.

Si quelqu'un est prêt à le tester, je peux pousser le code à ma fourchette et les gens peuvent le tester. Cela prendra du temps cependant puisque j'ai utilisé des chemins harcodés (preuve de concept).

Je pense que je l'aurai d'ici samedi ou dimanche.

Salut @hashhar !

Merci pour votre réponse.
En effet, cela semble vraiment compliqué. 😞

Je ne suis pas vraiment développeur donc je ne peux pas vraiment vous aider, je resterai juste au cas où vous auriez trouvé la magie et vous enverrais bonne chance!

@hashhar concernant vos commentaires, j'ai 2 options à suggérer:

  1. Vous pouvez redémarrer tout le VSCode (y compris le processus du nœud ancêtre) sous ssh-agent , exécuté par ssh-agent path/to/code ; de cette manière, il n'est pas nécessaire d'exécuter une instance de ssh-agent pour chaque processus de nœud.
  2. Vous pouvez exécuter ssh-agent à partir d'un processus de nœud, obtenir les variables d'environnement (par exemple les imprimer sur un fichier) et les partager à travers tous les processus.

Je peux définitivement tester. Ai-je besoin de quelque chose de particulier pour le construire? J'ai installé la version officielle.
Je peux le construire cependant :)

@joaomoreno Je pense que j'ai une solution partielle prête.

Dans le fichier extensions/git/src/askpass.ts , j'ai changé getEnv() en:

getEnv(): Promise<any> {
        return this.portPromise.then(port => ({
            ELECTRON_RUN_AS_NODE: '1',
            GIT_ASKPASS: path.join(__dirname, 'askpass.sh'),
            VSCODE_GIT_ASKPASS_NODE: process.execPath,
            VSCODE_GIT_ASKPASS_MAIN: path.join(__dirname, 'askpass-main.js'),
            VSCODE_GIT_ASKPASS_PORT: String(port),
            SSH_AUTH_SOCK: process.env['SSH_AUTH_SOCK'],
            SSH_AGENT_PID: process.env['SSH_AGENT_PID'],
            SSH_ASKPASS: process.env['SSH_ASKPASS'] || '/usr/lib/ssh/x11-ssh-askpass'
        }));
    }

Le SSH_AUTH_SOCK est choisi dans l'environnement de l'utilisateur s'il est défini.

Les choses suivantes sont désormais possibles:

| ssh-agent | clé ssh chargée dans l'agent | résultat |
|: ---: |: ---: |: ---: |
| ✔ | ✔ | ✔ |
| ✔ | ✘ | $ SSH_ASKPASS est exécuté |
| ✘ | ✘ | rien ne se passe |

Donc, pour résoudre le problème de la deuxième ligne, nous pouvons également définir SSH_ASKPASS partir de askpass.ts , ce qui oblige VSCode à lancer le programme au démarrage et à demander les phrases de passe des clés SSH.

Pour la dernière ligne cependant, nous aurions besoin de démarrer un agent ssh à partir de VSCode et de définir les variables appropriées.

Bénévoles?

Si quelqu'un est prêt à tester cela, vous pouvez cloner mon fork (https://github.com/hashhar/vscode), basculer vers la branche git-ssh-key et le construire et l'exécuter. Veuillez essayer de vérifier ce qui se passe sur toutes les combinaisons du tableau ci-dessus. Pour minimiser le bruit, vous pouvez commenter ce problème .

@hashhar Le process.env entier est toujours passé à Git lors de son apparition:

https://github.com/Microsoft/vscode/blob/master/extensions/git/src/git.ts#L383

Ces variables ne sont-elles pas transmises sans votre extrait de code?

@joaomoreno D'accord. Creuser plus profondément me montre deux problèmes.

  1. VSCode n'utilise apparemment pas la variable SSH_ASKPASS. Il est codé en dur dans '/ usr / lib / ssh-ssh-askpass'. Fondamentalement, le seul problème est que VSCode n'aide pas Git en lui indiquant comment lancer une invite pour obtenir la phrase de passe ssh-key de l'utilisateur.

La plupart des outils sous Linux fournissent un programme lié symboliquement à «/ usr / lib / ssh / ssh-askpass» mais beaucoup ne le font pas. C'est donc un problème que je pense que les gens se heurtent.

J'ai pu utiliser VSCode avec SSH tant que la clé ssh était déjà ajoutée au trousseau de clés ssh-agent.

Je pense que j'ai été stupide.

FAIRE:

  1. Étendez aussi vscode-askpass.ts etc. pour ssh.
  2. Démarrez ssh-agent s'il n'est pas déjà en cours d'exécution. C'est juste un problème de commodité, sinon vous devrez entrer la phrase de passe pour chaque opération git.

Je suis désolé de ne pas avoir travaillé à fond.

Pas de soucis, c'est cool que tu sautes dessus! 👍

Je rencontre cette erreur depuis un moment maintenant et je pensais que c'était moi. Y a-t-il plus de progrès à ce sujet?

+1

+1

+1

+1

S'il vous plaît, arrêtez le spam! Utilisez le bouton d'inscription et le bouton de réaction et n'écrivez pas de tels commentaires inutiles.

Moi aussi, j'ai le même problème.

image

Curieusement, pour moi, cela fonctionne dans Git Bash, mais pas dans Bash pour Windows (où j'obtiens l'erreur Permission denied (publickey) susmentionnée):

$ eval `ssh-agent`
$ ssh-add /path/to/key
$ code

Je peux vérifier que la clé SSH fonctionne en sshing directement sur la télécommande dans les deux cas; la seule différence que je peux voir est qu'au démarrage dans Bash pour Windows, VSCode avertit qu'il ne peut pas déterminer le répertoire de travail actuel.

Même problème ici, j'ai essayé presque toutes les solutions suggérées.

Je suis sur MacOs

@DavidBabel Je suis sur MacO et je contourne temporairement le problème en utilisant la clé ssh sans mot de passe ...

@letsdevus Merci pour l'aide, mais malheureusement ce n'est pas faisable dans un contexte professionnel

Le seul moyen que j'ai découvert pour le faire fonctionner était de:

  1. Installez la suite PuTTY
  2. Définissez plink comme backend Git SSH (avec la variable d'environnement GIT_SSH )
  3. Ajoutez à PuTTYgen votre clé d'accès
  4. Avant toutes les opérations, dans une invite de commande, utilisez plink pour vous connecter au service que vous souhaitez utiliser

Cela fait l'affaire.

Frapper le même problème, et comme il continue de réessayer, il frappe également la performance de VSCode 👎

Je viens de rencontrer ce problème moi-même. Heureusement, la solution de contournement (démarrer le code à partir du shell) fonctionne pour moi, mais ce serait bien si le problème était résolu.

Je viens de tomber dessus, la solution de mastic semble aider, mais je préférerais ne pas avoir de mastic du tout.

Je traite également de ce problème. J'ai créé un compte distinct pour le travail et j'ai mon compte personnel. J'ai beaucoup travaillé avec des fichiers de travail ces derniers temps. Je suis capable de passer mais je dois saisir la phrase secrète à chaque fois. Pas un tueur mais beaucoup moins productif.

C'est un peu décevant que la tentative de cloner un référentiel à l'aide de l'interface utilisateur VSC ne fonctionne pas avec une URL git de style ssh. Pour mémoire, j'utilise une clé SSH protégée par mot de passe et je n'exécute souvent pas d'agent SSH. Je trouve que l'invite de mot de passe supplémentaire pour déverrouiller ma clé est quelque peu rassurante - en particulier lorsque vous envoyez des modifications. :-) Ce n'est pas énorme, car la ligne de commande fonctionne bien pour moi (pour mémoire, j'exécute du code VS sur macOS.)

@gdamore donc, ça marche pour vous, sans agent ... Mais on parle de Windows. 😝
Quoi qu'il en soit, quel est le nom du fichier de la clé SSH? Est-ce un standard? Ou VSCode est-il assez bon pour trouver le bon fichier?

Je lance VScode principalement sur macOS, comme indiqué. Je n'ai aucune idée de comment cela fonctionne sous Windows; Je ne git pas de validation à partir de Windows, mais je compte plutôt sur des systèmes de fichiers partagés (mon instance de développement Windows s'exécute en tant qu'invité dans une VM sur mon mac.)

J'obtiens aussi cette erreur. aucun problème en ligne de commande, mais impossible d'effectuer une activité git dans l'application elle-même

rendre le vscode inutile en tant que git ide dans un contexte de travail

J'ai pu le faire fonctionner en suivant cet article de blog:

http://www.cgranade.com/blog/2016/06/06/ssh-keys-in-vscode.html

Même problème sur OSX avec des clés protégées par mot de passe.

Solution simple:

Ajoutez une variable d'environnement utilisateur appelée GIT_SSH avec le chemin vers C:\Program Files\PuTTY\plink.exe (après avoir configuré le chemin vers la clé privée en utilisant tortoise git )

Cela doit être corrigé, cela ne fait pas de VS Code un éditeur quotidien. : / Des informations sur la progression du problème?

J'adorerais que vscode obtienne les informations d'identification ssh de ssh-add .

Par exemple, l'arborescence source est capable de détecter les informations d'identification disponibles (en utilisant osxkeychain?), Sans aucune configuration supplémentaire

git -c diff.mnemonicprefix=false -c core.quotepath=false -c credential.helper=sourcetree commit -q -F /var/folders/_0/bvqq9l5d2ngg0stvkf53jrbr0000gn/T/SourceTreeTemp.ccbSGv 


git -c diff.mnemonicprefix=false -c core.quotepath=false -c credential.helper=sourcetree push -v --tags --set-upstream origin refs/heads/master:refs/heads/master 
Pushing to [email protected]:hanxue/gif-is-jif.git
To github.com:hanxue/gif-is-jif.git
   4eed265..762069a  master -> master
updating local tracking ref 'refs/remotes/origin/master'
Branch master set up to track remote branch master from origin.
Completed successfully

J'ai fait face à ce problème aujourd'hui, je suis à la menthe Linux. j'ai utilisé le trousseau .

sudo apt install keychain

eval 'keychain --eval SSHKEY'
et c'est tout.

@ Silentz0r où avez-vous exécuté la dernière commande?

@ValentinH dans votre shell, lisez l'exemple dans le lien.

Les gars, cela attend juste un codeur courageux pour fournir un PR!

Sur OSX, je le répare grâce à https://github.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain :

Dans ~/.ssh créez config fichier

Host * (asterisk for all hosts or add specific host)
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile <key> (e.g. ~/.ssh/userKey)

@joaomoreno
Je ne sais pas à quel point je suis "Brave", mais je suis un peu fan de SSH.
Je travaillerai sur un PR pour décembre.

Tous les citoyens concernés ...

Après un test d'installation rapide, il semble qu'une configuration Windows 7 soit assez simple (voir GIT_SSH et autres commentaires) Je crois que les commentaires selon lesquels OS X utilise le trousseau sont tout aussi faciles.
La configuration est essentiellement un problème de configuration externe. VSC n'a besoin d'aucune modification de configuration ou de fonctionnalité pour utiliser SSH, git appelle le client SSH. Désolé si je manque quelque chose d'évident.

À part un assistant de configuration, j'essaie de déterminer ce qui serait vraiment bénéfique à ajouter au code.
Un commentaire mentionne l'utilisation de plus d'une clé qui peut nécessiter de modifier la variable d'environnement vraisemblablement en fonction de la configuration de l'espace de travail. Même cela peut être géré par l'agent. Je ne pense pas qu'il soit logique de faire quoi que ce soit comme ajouter ssh au code car git s'en charge assez directement.

Quant à la gestion des identifiants: cela veut vraiment être géré par un agent sécurisé tel que
pagent / porte-clés et cetera.

Commentaires?

"VSC n'a pas besoin de modifications de configuration ou de fonctionnalités pour utiliser SSH, git appelle le client SSH. Désolé si je manque quelque chose d'évident."

(Sous Windows)

Ce qui se produit
Si je lance VS Code à partir d'un raccourci et que je n'ai pas également téléchargé un logiciel tiers et effectué une configuration de ligne de commande, cela ne fonctionne pas avec des clés SSH cryptées.

D'un autre côté, si j'ouvre Eclipse et que je me connecte à un référentiel Git, il me demandera la phrase de passe de mes clés.

Attendu
Une nouvelle installation de VSCode, sur un système sans autre logiciel installé, devrait faire apparaître une boîte de message demandant ma phrase de passe, puis l'utiliser pour déchiffrer mes clés et les utiliser pour se connecter au référentiel distant.

@cleidigh SourceTree fonctionne automatiquement sans suivre les instructions de @ItachiSan , alors que Code requiert cette configuration. Peut-être pourrions-nous faire tout ce qu'ils font.

@andrewducker
@BeginnerForLife
J'ai regardé un peu Eclipse et l'arbre des sources. Malheureusement, je ne peux actuellement pas installer l'un ou l'autre de ces éléments sur mon système, donc mes connaissances et mon expérience sont limitées par Google ;-) Gardez cela à l'esprit si je manque quelque chose. Voici un synopsis / différence de base:

Eclipse: plug-in EGit: contient le client Java git, le client ssh semble être interne, nécessite une importation de clé si la clé existante

SourceTree: client graphique, nécessite un client ssh externe (de la capture d'écran ci-dessous suppose plink sur Windows) @BeginnerForLife Je pense que cette configuration n'est pas si loin des exigences actuelles.

image

VSC: nécessite git / ssh externe

@andrewducker votre description suit mon commentaire, sauf si Code implémente à la fois git et SSH (y compris la génération et la gestion des clés), je ne suis pas sûr qu'il y ait beaucoup entre les deux. Bien que cela puisse être fait, je suis sceptique sur le fait que l'équipe voudrait attirer les deux. @joaomoreno peut en parler.
D'un point de vue pratique, j'aimerais souligner ce qui suit:

  • L'expérience git "prête à l'emploi" est plus conforme à l'utilisation du HTTPS intégré, nécessite toujours un git externe
  • Pour les situations de travail où SSH est requis, je dirais qu'il existe très probablement des politiques et des ssh
    des outils déjà en place, c'est ce que j'ai vécu dans les différentes entreprises pour lesquelles j'ai travaillé.
  • En supposant que l'on soit d'accord avec ce qui précède, le couplage à des outils externes serait le scénario le plus probable que
    configurer ssh / git à partir de zéro ou autonome.
  • Pour être clair, je ne veux en aucun cas impliquer que ssh n'est pas utile et / ou pas nécessaire, je dis simplement que VSC fonctionne et fonctionne assez facilement en pointant git sur un client SSH local.
  • Je pense que cela pourrait éventuellement être réalisé avec une extension

En me répétant, sans git / ssh interne au code, je n'ai pas encore déterminé une option moindre. Je suis absolument disposé à travailler là-dessus, mais cela doit s'aligner avec les objectifs de l'équipe et obtenir une bénédiction de @joaomoreno en particulier.

@cleidigh Je ne comprends pas quel est le plan.

@joaomoreno
J'espérais plus de réponses d'autres parties, mais j'ai besoin de votre opinion / préférence sur les plans possibles.
Pour être clair, Code semble fonctionner très bien pour l'accès à la clé privée SSH via git avec juste un peu de configuration externe. Certains ici suggèrent une plus grande intégration et une meilleure expérience personnelle.

Quelques approches possibles:

1- Implémenter git / ssh set up helper / Wizard - Trouver ssh, définir GIT_SSH - ajout interne
2- Identique à 1 implémenté comme extension
3- Étendez ci-dessus pour coordonner le téléchargement de SSH / git pour la configuration initiale
4- Implémenter le client / outils SSH - ajout interne
5- Identique à 4 implémenté comme extension
6- Implémenter git / SS H en interne - similaire à eclipse / egit

Je pense que le numéro 1 est suffisant (peut-être 3) malgré le fait qu'il ne met pas en œuvre tout ce dont on parle. Les options 4 à 6 semblent représenter trop d'efforts et un grand changement des composants clés.

Préférences @joaomoreno / all?

Il peut être judicieux d'essayer d'utiliser VS Code avec Git sur Windows et d'identifier les points faibles. Pour moi, le principal problème est l'authentification.

L'option 1 est définitivement ma préférée.

@BeginnerForLife
Si nous avions une découverte helper / ssh et configurée, cela aide-t-il?
J'ai configuré ssh pour git pour Windows, en plus d'installer le client (je l'avais déjà), je venais de définir GIT_SSH
a également ajouté une empreinte digitale clé avec l'agent.

Se concentrer sur la première option par préférence @joaomoreno :

  • Détecter l'espace de travail avec le référentiel à l'aide de ssh, démarrer l'assistant
  • Fournir une commande pour démarrer l'aide à tout moment
  • Recherchez SSH installé, vérifiez que la variable d'environnement est définie
  • Avertir l'utilisateur si aucun SSH n'est trouvé, suggérer / pointer les clients appropriés
  • offre de définir une variable d'environnement
  • demander à l'utilisateur la clé privée à utiliser et ajouter une empreinte digitale à l'agent

Je crois mais je ne peux pas promettre que tout ce qui précède est pratique. En supposant que personne n'a d'autre idée brillante
Je pense qu'il serait bon de prototyper ce qui précède.

Les commentaires supplémentaires sont les bienvenus.

Ouais, je pense que ces puces devraient le couvrir. Ce dernier en particulier (invite l'utilisateur ...) devrait résoudre beaucoup de problèmes de personnes.

@BeginnerForLife
Merci. Je vais commencer par cette approche et j'espère que d'autres interviendront avec toute autre contribution.
Je pense que je vais poster un pointeur sur mon référentiel avant de faire un PR pour voir ce que les gens pensent. Revenez ici
pour suivre mes progrès.

Je conviens que (1) est la meilleure approche. Et c'est essentiellement ce que je fais pour le moment - démarrer ssh-agent s'il n'est pas déjà en cours d'exécution et définir les variables d'environnement, puis démarrer VS-Code à partir de cette ligne de commande, afin qu'il récupère les variables d'environnement.

Si VS Code peut vérifier que SSH-Agent n'est pas déjà en cours d'exécution, puis le démarrer si nécessaire, ce serait génial.

J'utilise le module Git de PowerShell pour faire tout cela - mais il utilise la logique de:
https://help.github.com/articles/working-with-ssh-key-passphrases/
J'espère que cela fonctionnera, du point de vue du nœud (bien que vous deviez vraisemblablement vérifier que cela fonctionne sur tous les systèmes d'exploitation)

@andrewducker cc: tout

Mise à jour: J'ai dû revenir à un précédent PR mais, en fait, j'ai fait beaucoup de progrès à ce sujet:

  • Outre des trucs faciles comme vérifier / paramétrer GIT_SSH, vérifier le client git, l'agent clé
  • A également constaté qu'il semble que les agents clés Windows autoriseront les ajouts de clés après le démarrage
  • Je pense que nous pouvons installer de nouvelles clés sous Code en lançant l'agent de clé qui lui-même demandera une phrase de passe.
  • La prochaine expérience consiste à savoir si je peux détecter un échec de connexion SSH

Devrait pouvoir y revenir dans un jour ou deux.

Même chose ici sur macOS High Sierra avec une clé privée par défaut protégée par mot de passe. La phrase secrète est stockée dans le trousseau du système d'exploitation lors d'une session de connexion. Lorsque je redémarre mon mac, je dois le saisir à nouveau avant le premier git pull / git push pour plus de sécurité et la phrase de passe n'est plus demandée depuis lors jusqu'à ce que je me déconnecte. Voici comment le terminal se comporte lorsque j'interagis avec un dépôt distant pour la première fois:

$ cd /path/to/repo
$ git pull
Enter passphrase for key '/Users/me/.ssh/id_rsa':
[me typing passphrase and pressing enter]
Updating 3e97c76..65a959c

Cependant, quand c'est VSCode qui essaie d'extraire quelque chose après un redémarrage, cette erreur apparaît:

screen shot 2018-02-12 at 11 05 09

La solution de contournement consiste à ouvrir un terminal, à accéder au dépôt et à taper git pull . Pas un désastre, mais pourrait être amélioré.

__UPD: __ Fait intéressant, lorsqu'il s'agit de demander une phrase secrète de clé GPG pour signer de nouveaux commits, VSCode fonctionne rapidement et affiche une fenêtre contextuelle avec un champ de saisie.

Quel est le statut à ce sujet?

Actuellement, l'erreur Git: [email protected]: Permission denied (publickey). est affichée.

Les utilisateurs qui ont créé une paire de clés dans ~\.ssh peuvent s'authentifier via la ligne de commande en entrant la phrase de passe pour la paire de clés mais pas à partir de VS Code.

@cleidigh une chance?
Quelqu'un a-t-il une idée de la façon dont nous pouvons intercepter l'événement de demande de mot de passe? Je pense qu'une fois que j'ai intercepté cela, je pourrais avoir une chance de faire ce que fait l'atome et de fournir une zone de texte à utiliser. Mais je suis perdu pour les idées.

J'ai eu toutes sortes de problèmes d'identification, jusqu'à ce que je réalise que le problème n'est pas avec VSCode mais avec l'environnement. Si vous avez correctement configuré ssh, git et ainsi de suite, vous n'aurez aucun problème, c'est vrai pour Linux et Windows. Et si quelque chose ne va pas, vous pouvez toujours le forcer via le terminal.

Je n'ai pas besoin de configurer l'environnement pour d'autres IDE.
Dans Eclipse, par exemple, je peux le lancer directement, et lorsqu'il a besoin d'accéder à un référentiel git distant, il me demandera le mot de passe pour déchiffrer mes clés SSH.
Visual Studio Code doit faire de même.

Tout: mise à jour
alors que j'ai fait pas mal de progrès sur ce point, j'ai dû le mettre de côté pour plusieurs raisons donc je n'ai pas fait beaucoup de progrès depuis janvier. Désolé pour ça. J'espère que cela se fera en mai.

À @ john681611 @andrewducker

Comme décrit précédemment dans le fil de discussion, le seul problème fondamental qui ne peut pas être implémenté "proprement"
invite ou tout type de gestion des clés. En effet, Code s'appuie sur un GIT externe et
GIT s'appuie sur les systèmes SSH. Sans le code qui les implémente en interne (comme eclipse), nous avons des options limitées d'interaction avec ces composants externes.

Mon prototype actuel peut faire ce qui suit:

  • vérifiez si un référentiel utilise SSH si oui, a démarré l'assistant de configuration pour ci-dessous:
  • vérifier et demander la variable d'environnement GIT_SSH
  • vérifier le client SSH
  • forcer le dialogue du mot de passe du client si possible (WIP) Notez que cette invite n'est pas celle du client

J'ai convenu que ce serait bien pour @andrewducker de répondre comme Eclipse, mais cela signifierait que l'équipe devrait implémenter une fonctionnalité importante déjà prise en charge.

Remarque: Une autre approche pourrait consister à demander au client GIT officiel de gérer plus de paramètres de sécurité que nous pourrions utiliser pour contrôler le SSH. Cela garderait l'architecture actuelle la même

Tout / Mettre à jour

J'ai travaillé sur la dernière et la plus importante pièce du prototype: un shim askpass pour permettre à Code de fournir une invite GUI de phrase de passe native. Actuellement, je crois que cela sera possible et en conjonction avec l'agent ssh approprié de la plate-forme, les informations d'identification seront stockées de manière normale.

Mon problème est que je ne peux pas obtenir SSH ou GIT pour honorer SSH_ASKPASS, GIT_ASKPASS ou core.askpass sous GIT Bash ou CMD sur Windows. l'invite du terminal est la seule chose qui s'affiche. En tant que test le plus basique, j'ai défini un ou tous ces éléments sur le git-gui intégré - askpass, mais cela ne fonctionne pas non plus malgré le programme exécutable s'il est testé à partir de la ligne de commande.

Quelqu'un a-t-il utilisé ces méthodes pour modifier l'entrée de la phrase secrète sous Windows ou dans tout autre scénario pertinent?

Sourcetree fait également apparaître un terminal. C'est pas si mal.

Pour ajouter à la solution de versions ultérieures, seule la directive UseKeychain résout le problème sur ma machine (macOS 10.13.5 High Sierra Developer Beta, 17F70a). La directive AddKeysToAgent ne semble pas nécessaire. Cette configuration fonctionne pour moi:

Host github.com
  HostName github.com
  IdentityFile /path/to/your/ssh/private/key
  UseKeychain yes

Quel est le statut à ce sujet?

'14581: VS Code nécessite que les clés git ssh soient nommées "id_rsa"' a été fermé comme un double de ce problème. Je ne suis pas sûr de voir en quoi il s'agit d'un doublon - "Support git avec mot de passe de clé privée". Celles-ci semblent être des problèmes distincts.

EDIT: ce n'était qu'un correctif pour la seule instance du terminal que j'exécutais; même l'ouverture d'un nouveau terminal dans la même session de code a entraîné à nouveau l'erreur de clé publique

Il semblait que mon agent ssh était mort à un moment donné ou avait oublié ma clé non "id_rsa" que j'utilise pour git. Alors je viens de courir:

eval "$(ssh-agent -s)"
ssh-add path/to/my/github/ssh/private/key

et tout était revenu à la normale. C'est la séquence de commandes que GitHub vous demande d'exécuter lors de la configuration d'une nouvelle clé SSH de toute façon.

J'admets que je n'ai pas lu la plupart de ce fil, mais pour moi, cela a fonctionné.

@cleidigh @joaomoreno, ce n'est peut-être pas un bogue mais plutôt une mauvaise configuration des clés ssh, en particulier sous macOS. Sierra a radicalement changé la façon dont les clés sont conservées en session

Je viens de le résoudre lorsque je régénère un nouveau sshkey sans la phrase secrète. Je suppose que peut-être que vscode ne peut pas ouvrir un shell pour vous laisser entrer la phrase de passe.

Juste besoin d'ajouter ma clé au trousseau Mac avec ssh-add -K ~/.ssh/id_rsa ; remplacez id_rsa par votre clé si vous n'utilisez pas la valeur par défaut.

Une solution de contournement pour Windows 10:

  1. Faites en sorte que Git utilise OpenSSH fourni avec Windows au lieu de celui fourni avec Git.
    git config --global core.sshCommand "C:/Windows/System32/OpenSSH/ssh.exe"
  2. Configurez le service ssh-agent (pas celui fourni avec git) pour qu'il s'exécute automatiquement.
    Ouvrez le Gestionnaire des tâches, onglet Services, cliquez sur Ouvrir les services.
    Trouvez l'agent d'authentification OpenSSH, ouvrez les propriétés, définissez le type de démarrage sur Automatique, appuyez sur OK.
    Démarrez également le service ou redémarrez votre ordinateur.
  3. Ajoutez votre clé protégée par mot de passe à l'agent.
    ssh-add
    Il doit automatiquement récupérer les clés stockées dans C: \ Users \% USERNAME% \. Ssh, où ssh-keygen les crée.
    Entrez votre (vos) mot (s) de passe à l'invite.

Remarque: Si, lors de l'installation de Git pour Windows, vous avez sélectionné l'option pour ajouter des commandes bash à PATH, la commande ssh-add peut pointer vers le mauvais exécutable. Si tel est le cas, vous pouvez exécuter manuellement celui inclus pour ajouter votre clé à l'agent:
C:\Windows\System32\OpenSSH\ssh-add.exe

Désormais, l'agent d'authentification OpenSSH intégré s'exécutera au démarrage avec votre clé protégée par mot de passe déverrouillée, et Git utilisera Windows OpenSSH au lieu de la sienne. Donc pas besoin de taper votre mot de passe à chaque fois, pas besoin de démarrer manuellement l'agent ssh, et pas besoin de démarrer VS Code à partir de la ligne de commande.

Exactement comme LynnScarlett l'a remarqué, il n'y a aucun moyen de saisir une phrase de passe pour la clé et l'utilisation du trousseau est dangereuse, alors VSC ajoutera-t-il la prise en charge de cette fonctionnalité de base?

Je ne vois pas en quoi le trousseau est dangereux. De plus, les IDE populaires permettent la saisie de mot de passe, de sorte que VSC pourrait très bien prendre en charge les deux méthodes d'entrée

Je voulais dire ssh-agent, je pourrais confondre deux choses, je ne suis pas certain :)

Ssh-agent n'est «non sécurisé» que dans le sens où il charge la clé par session. Vous rencontrez d'autres problèmes si vous avez un ordinateur compromis

Cela explique l'insécurité liée à l'utilisation de ssh-agent plus en détail:
http://rabexc.org/posts/pitfalls-of-ssh-agents
À votre santé!

Tout cela se résume à: ne faites pas confiance à votre machine à quelqu'un d'autre qui a un accès root - ce que vous ne devriez pas faire de toute façon. Encore une fois: si ssh-agent est compromis en raison des détails de cet article, vous avez de plus gros problèmes

La solution

Version du code VS: Code 1.27.2 (f46c4c4, 2018-09-12T16: 17: 45.060Z)
Version du système d'exploitation: Windows_NT x64 10.0.17134
git version 2.19.0.windows.1

Ne fonctionne toujours pas.

Cela fait deux ans maintenant, et toujours pas de solution pour cela. Le même problème s'applique à Atom, donc je suppose que ce n'est pas quelque chose qui est facile à ajouter? Tout ce que je voudrais vraiment, c'est Push (avec mot de passe) dans la liste déroulante Plus d'actions ... git dans le panneau de configuration source.

Je suis heureux de taper la phrase de passe à chaque push, je ne veux tout simplement pas avoir à accéder à la ligne de commande et à taper des commandes git brutes.

Cela fait deux ans maintenant, et toujours pas de solution pour cela. Le même problème s'applique à Atom, donc je suppose que ce n'est pas quelque chose qui est facile à ajouter? Tout ce que je voudrais vraiment, c'est Push (avec mot de passe) dans la liste déroulante Plus d'actions ... git dans le panneau de configuration source.

Je suis heureux de taper la phrase de passe à chaque push, je ne veux tout simplement pas avoir à accéder à la ligne de commande et à taper des commandes git brutes.

Essayez de cloner le dépôt avec https au lieu de ssh. Cela fait que VS Code me demande un nom d'utilisateur et un mot de passe.

Je viens juste d'Atom pour vérifier Github Pull Request dans VS Code et la première réflexion est

Veuillez vous assurer que vous disposez des droits d'accès appropriés
et le référentiel existe.

git show: index.html
git pull --tags origin master
git show: index.html
[email protected] : Autorisation refusée (publickey).
fatal: impossible de lire à partir du référentiel distant.
Veuillez vous assurer que vous disposez des droits d'accès appropriés
et le référentiel existe.

je n'utiliserai donc pas l'option avec uniquement la touche ssh sans saisir mon mot de passe également.
Je reviendrai donc sur le code VS et l'extension Github Pull Request plus tard.
J'adore ce que la communauté a fait jusqu'à présent et j'ai hâte de l'utiliser à l'avenir avec mes préférences en matière de sécurité.

Essayez de cloner le dépôt avec https au lieu de ssh. Cela fait que VS Code me demande un nom d'utilisateur et un mot de passe.

Merci, cela fonctionne aussi pour moi. Et si vous installez Git pour le gestionnaire d'informations d'identification Windows et tapez la commande suivante dans le shell git bash en code VS:
git config --global credential.helper manager
Ensuite, la synchronisation et les extractions fonctionnent sans avoir à ressaisir l'ID utilisateur et le mot de passe Gitlab.

Ce serait bien si l'on pouvait faire la même chose pour SSH, étant donné que c'est le chemin par défaut du chemin du dépôt Gitlab.

@whatsyourgithub , aimerait utiliser votre solution (semble mieux que primitive et boguée "lancez VSC via l'invite de commande") mais je reçois un message d'erreur VSC:
Git: aucune identité de ce type: /C/Users/myuser/.ssh/myrsaKey_rsa
Même si le fichier est là.
Et, autre chose ... en essayant C: \ Windows \ System32 \ OpenSSHssh-add.exe, j'obtiens également le No such file or directory.
J'utilise le PowerShell VSCode pour taper ces commandes
Des idées?

Je suis passé à https plutôt qu'à SSH. C'est la seule façon dont je pourrais le faire jouer gentiment. Fait intéressant, Github recommande en fait d'utiliser https plutôt que SSH.

@whatsyourgithub , aimerait utiliser votre solution (semble mieux que primitive et boguée "lancez VSC via l'invite de commande") mais je reçois un message d'erreur VSC:
Git: aucune identité de ce type: /C/Users/myuser/.ssh/myrsaKey_rsa
Même si le fichier est là.
Et, autre chose ... en essayant C: \ Windows \ System32 \ OpenSSHssh-add.exe, j'obtiens également le No such file or directory.
J'utilise le PowerShell VSCode pour taper ces commandes
Des idées?

J'essaierais d'abord d'ouvrir Powershell en dehors de VS Code, même si cela ne devrait pas avoir d'importance.

OpenSSH est censé être installé avec les dernières versions de Windows 10. Essayez de mettre à jour.
Si cela ne fonctionne pas, essayez d'accéder à Paramètres> Applications> Applications et fonctionnalités> Gérer les fonctionnalités facultatives> Ajouter une fonctionnalité et recherchez OpenSSH.

@whatsyourgithub , aimerait utiliser votre solution (semble mieux que primitive et boguée "lancez VSC via l'invite de commande") mais je reçois un message d'erreur VSC:
Git: aucune identité de ce type: /C/Users/myuser/.ssh/myrsaKey_rsa
Même si le fichier est là.
Et, autre chose ... en essayant C: \ Windows \ System32 \ OpenSSHssh-add.exe, j'obtiens également le No such file or directory.
J'utilise le PowerShell VSCode pour taper ces commandes
Des idées?

J'essaierais d'abord d'ouvrir Powershell en dehors de VS Code, même si cela ne devrait pas avoir d'importance.

OpenSSH est censé être installé avec les dernières versions de Windows 10. Essayez de mettre à jour.
Si cela ne fonctionne pas, essayez d'accéder à Paramètres> Applications> Applications et fonctionnalités> Gérer les fonctionnalités facultatives> Ajouter une fonctionnalité et recherchez OpenSSH.

Salut.
Merci d'avoir répondu.
OpenSSH (client) était déjà installé.
J'ai répété la procédure en utilisant le PowerShell autonome mais je continue à recevoir le message d'erreur
no such identity: /C/Users/<user>/.ssh/RSAPRIVKEY_rsa: No such file or directory
Cela serait-il lié à la propriété de RSAPRIVKEY_rsa? Je n'ai pas émis la clé en utilisant PowerShell mais je l'ai copiée depuis un autre endroit (de toute façon, cela fonctionne avec l'arborescence des sources ou avec l'interface graphique Git)

@whatsyourgithub , aimerait utiliser votre solution (semble mieux que primitive et boguée "lancez VSC via l'invite de commande") mais je reçois un message d'erreur VSC:
Git: aucune identité de ce type: /C/Users/myuser/.ssh/myrsaKey_rsa
Même si le fichier est là.
Et, autre chose ... en essayant C: \ Windows \ System32 \ OpenSSHssh-add.exe, j'obtiens également le No such file or directory.
J'utilise le PowerShell VSCode pour taper ces commandes
Des idées?

J'essaierais d'abord d'ouvrir Powershell en dehors de VS Code, même si cela ne devrait pas avoir d'importance.
OpenSSH est censé être installé avec les dernières versions de Windows 10. Essayez de mettre à jour.
Si cela ne fonctionne pas, essayez d'accéder à Paramètres> Applications> Applications et fonctionnalités> Gérer les fonctionnalités facultatives> Ajouter une fonctionnalité et recherchez OpenSSH.

Salut.
Merci d'avoir répondu.
OpenSSH (client) était déjà installé.
J'ai répété la procédure en utilisant le PowerShell autonome mais je continue à recevoir le message d'erreur
no such identity: /C/Users/<user>/.ssh/RSAPRIVKEY_rsa: No such file or directory
Cela serait-il lié à la propriété de RSAPRIVKEY_rsa? Je n'ai pas émis la clé en utilisant PowerShell mais je l'ai copiée depuis un autre endroit (de toute façon, cela fonctionne avec l'arborescence des sources ou avec l'interface graphique Git)

D'ACCORD. Résolu .. Dans le fichier ./ssh/config, j'avais le chemin vers la clé ssh C: \ Users \.ssh \ RSAKEY_rsa et l'a changé en ~ / .ssh / RSAKEY_rsa
Ensuite, il suffit d'enregistrer la clé et c'est tout.
Merci

@whatsyourgithub , désolé de déranger à nouveau. J'essaie d'aider mon collègue et il ne réussit pas (faire comme vous l'avez suggéré ci-dessus fonctionne pour moi mais pas pour lui). Voici les symptômes:
Il est capable d'effectuer une récupération git à partir de la console PS, mais quand il pousse ou se synchronise à l'aide de gitacora (le plugin pour synchroniser automatiquement - que j'utilise également sans aucun problème), il reçoit le message d'erreur suivant:
Permission denied (publickey).
Nous savons que la clé a été ajoutée par OpenSSH parce que C:\Windows\System32\OpenSSH\ssh-add.exe -L récupère sa clé publique et parce que si nous utilisons la commande git fetch depuis PS, cela fonctionne.
Une idée sur la façon dont peut l'aider à diagnostiquer / réparer?

@whatsyourgithub , désolé de déranger à nouveau. J'essaie d'aider mon collègue et il ne réussit pas (faire comme vous l'avez suggéré ci-dessus fonctionne pour moi mais pas pour lui). Voici les symptômes:
Il est capable d'effectuer une récupération git à partir de la console PS, mais quand il pousse ou se synchronise à l'aide de gitacora (le plugin pour synchroniser automatiquement - que j'utilise également sans aucun problème), il reçoit le message d'erreur suivant:
Permission denied (publickey).
Nous savons que la clé a été ajoutée par OpenSSH parce que C:\Windows\System32\OpenSSH\ssh-add.exe -L récupère sa clé publique et parce que si nous utilisons la commande git fetch depuis PS, cela fonctionne.
Une idée sur la façon dont peut l'aider à diagnostiquer / réparer?

On dirait que sa clé n'est pas liée à son compte github, ou que son compte github n'est pas ajouté en tant que collaborateur sur le repo.

On dirait que sa clé n'est pas liée à son compte github, ou que son compte github n'est pas ajouté en tant que collaborateur sur le repo.

Je gère le serveur bitbucket et j'y ai ajouté sa clé pub (et en fait, il est capable d'accéder à la récupération et au push lorsqu'il utilise la ligne de commande via PowerShell).
Ou est-ce quelque chose que je n'ai pas compris dans votre réponse?

Juste besoin d'ajouter ma clé au trousseau Mac avec ssh-add -K ~/.ssh/id_rsa ; remplacez id_rsa par votre clé si vous n'utilisez pas la valeur par défaut.

macOS High Sierra vs code
[email protected] : Autorisation refusée (publickey).
fatal: impossible de lire à partir du référentiel distant.

Marquer cela parce que cela a résolu le problème avec git intégré ne fonctionnant pas dans vscode même si cela fonctionnait parfaitement à partir de la ligne de commande.

@whatsyourgithub Cela semble fonctionner via git config --global core.sshCommand "C:/Windows/System32/OpenSSH/ssh.exe" après avoir généré un nouvel id_rsa.

  1. Mais la clé a un mot de passe, lorsque j'appuie, il n'y a pas de boîte de dialogue d'invite pour me laisser entrer mon mot de passe.
  2. Si j'utilise une clé qui avait la sortie sur mon PC via ssh-add .ssh\id_rsa , il y a une erreur. Pourquoi ne puis-je pas ajouter la clé? Je veux utiliser la même clé que j'avais ajoutée auparavant.
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
Permissions for 'D:/ablob/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "D:/ablob/.ssh/id_rsa": bad permissions
[email protected]: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Système d'exploitation: Windows 10
VSC: 1,28

Les mises à jour?

Des plans pour gérer cela dans un proche avenir?

Selon la documentation VS Code (https://code.visualstudio.com/docs/editor/versioncontrol):

Puis-je utiliser l'authentification SSH Git avec VS Code?
Oui, bien que VS Code fonctionne plus facilement avec les clés SSH sans phrase de passe. Si vous avez une clé SSH avec une phrase de passe, vous devrez lancer VS Code à partir d'une invite Git Bash pour hériter de son environnement SSH.

Cette page était datée du 12/12/2018.

Je viens donc de générer de nouvelles clés ssh sans phrase de passe (en la laissant vide à l'invite et en écrasant les précédentes), je les ai ajoutées à mon compte sur GH et j'ai également ajouté l'identité à l'agent ssh en exécutant ssh-add.exe ~\.ssh\id_rsa . Maintenant, tout fonctionne.

Si d'autres peuvent le confirmer, je suggérerais de fermer ce sujet car la documentation officielle de VS Code indique déjà explicitement qu'elle ne fonctionnera qu'avec les phrases de passe en lançant VS Code à partir de git-bash.

Si d'autres peuvent le confirmer, je suggérerais de fermer ce sujet car la documentation officielle de VS Code indique déjà explicitement qu'elle ne fonctionnera qu'avec les phrases de passe en lançant VS Code à partir de git-bash.

Eh bien, la documentation dit "le plus facilement", non pas que cela ne fonctionnerait pas du tout lorsque les clés ont des mots de passe, et sa suggestion de lancer VS Code à partir d'une invite Git Bash n'est requise que pour ceux qui utilisent Git-for-Windows ' Agent SSH pour gérer leurs clés.

Je peux en fait confirmer que j'utilise l'agent SSH de Windows (pas celui fourni avec Git pour Windows), y charger ma clé SSH (protégée par mot de passe), puis lancer VS Code normalement (pas à partir d'une invite de commande spécifique) et Je peux git push / pull avec succès vers les dépôts qui nécessitent ma clé.

Je confirme que l'ouverture de VS Code via git bash demandera la clé ssh et dans VS code demandera vos mots de passe ssh dans le terminal.

J'ai eu un problème similaire avec VSCode sur Windows 10 ne poussant / tirant pas de _ ssh: // repo_ alors que c'était possible dans le terminal.

J'utilise CMDer avec git-for-windows et VSCode a été configuré avec git.path pointant vers ces binaires. J'ai également le fichier de configuration ssh dans le répertoire _% USERPROFILE% \. Ssh_ avec toutes les options nécessaires et le fichier d'identité défini sur fichier de clé publique. KeePass avec KeeAgent sert les clés.

La procédure précédemment mentionnée pour exécuter d'abord le terminal (CMDer), puis exécuter le code à partir de celui-ci fonctionne bien, mais je ne l'ai pas aimé. J'ai donc essayé (avec succès) une autre approche:
Dans le répertoire git.exe, j'ai créé le fichier cmd:

<strong i="10">@echo</strong> off
set SSH_AUTH_SOCK=/path/to/my/sock.file
%~dp0git.exe %1 %2 %3 %4 %5 %6 %7 %8 %9

(Le chemin SSH_AUTH_SOCK doit avoir des barres obliques) et pointe l'option git.path dans le code vers lui.

Maintenant, Code démarre, semble lire le fichier _ ~ / .ssh / config_ sans aucun "hacks" supplémentaire, et est capable d'utiliser l'agent.

Éditer:
Je suppose que définir globalement la variable d'environnement SSH_AUTH_SOCK aiderait également - le coût des clés étant accessible par chaque application ...

"you'll need to launch VS Code from a Git Bash prompt to inherit its SSH environment."

L'une des choses les plus médiocres que j'ai entendues de Microsoft; Je ne devrais pas avoir à démarrer VS Code à partir d'une ligne de commande spécifique pour faire fonctionner ssh; essayez peut-être de mettre en œuvre une solution appropriée.

arriéré? vraiment?

Cela m'a amené à passer à powershell et posh-git qui fonctionnent raisonnablement bien. Pour que ssh-agent fonctionne parfaitement, j'ai dû ajouter ce qui suit à $profile.CurrentUserAllHosts (par défaut à C:\Users\USERNAME\Documents\WindowsPowerShell\profile.ps1 ).

Import-Module posh-git
Set-Alias ssh-agent "$env:ProgramFiles\git\usr\bin\ssh-agent.exe"
Set-Alias ssh-add "$env:ProgramFiles\git\usr\bin\ssh-add.exe"
Set-Alias ssh "$env:ProgramFiles\git\usr\bin\ssh.exe"
Start-SshAgent -Quiet

Si d'autres peuvent le confirmer, je suggérerais de fermer ce sujet car la documentation officielle de VS Code indique déjà explicitement qu'elle ne fonctionnera qu'avec les phrases de passe en lançant VS Code à partir de git-bash.

Je ne suis pas d'accord ici: ce problème concerne le manque de prise en charge appropriée de la phrase de passe SSH dans VS Code, et la solution de contournement documentée est simplement cela - une solution de contournement. Il y a déjà trop de tentations pour l'utilisateur paresseux de sauter une bonne sécurité de phrase de passe, donc tout outil moderne devrait le rendre facile à faire la bonne chose.

Sur la base de ce que d'autres ont suggéré ci-dessus, je viens de créer un fichier de script bash (c'est-à-dire projectName.sh ) et j'ai écrit ce qui suit:
"location/to/Code.exe" "location/to/project"

Maintenant, tout ce que j'ai à faire est de double-cliquer sur le fichier pour ouvrir VSCode et travailler avec un certificat avec une phrase de passe.

BTW: Au cas où cela aiderait les autres à trébucher sur ce problème, je devais également: git config --global http.sslBackend schannel comme décrit ici .

Je suis perplexe que, après deux longues années, une chose aussi basique que "travailler avec git en utilisant ssh en utilisant une clé qui A une phrase de passe" n'a pas encore été abordée sans utiliser de solutions de contournement laides. VSCode est un excellent éditeur à mon humble avis, mais cette «fonctionnalité» est vraiment nécessaire. Veuillez le prioriser

Voici un ancien post que j'ai lancé sur stackoverflow qui peut être utile; une option consiste à utiliser le gestionnaire d'informations d'identification Windows: https://stackoverflow.com/questions/35110079/git-bash-pageant-not-using-keys/43313491#43313491

Je suppose que la question est de savoir si VSCode devrait ou non être en charge de la gestion des informations d'identification SSH / HTTPS en tant que gestionnaire de keystore. Il semble que cela devrait être géré par le système d'exploitation, un programme tiers ou une configuration appropriée de git qui se mélange avec les deux premiers points.

Même si j'aime le son de cette fonctionnalité, il semble déjà qu'Unix et Windows devraient avoir des moyens de gérer ce problème sans l'ajouter dans VSCode.

Je ne sais pas si quelque chose ici dans ces articles github aide non plus: https://help.github.com/articles/connecting-to-github-with-ssh/
En fin de compte, on dirait qu'ils vous disent d'utiliser bash sur windows / une autre alternative bash windows, ce qui ramène ensuite les gens à ce même problème avec une solution de contournement piratée: \

@ctsstc Oui, j'ai installé Git Credentials Manager pour Windows, mais pour une raison quelconque, il ne fonctionne pas. Je suis conscient que cela peut ne pas être une responsabilité pour VSCode. Par exemple, dans Android Studio et les IDE basés sur IDEA, ils se soucient uniquement d'appeler le binaire git, et la seule intégration qu'ils ont est lorsque l'opération nécessite une phrase de passe, l'EDI la persiste en toute sécurité et la transmet à Git - peut-être que bonne approche. C'est peut-être la seule chose qui leur manque?

@ctsstc Pas du tout d' accord, vous ne pouvez pas implémenter une interface utilisateur dans un programme CLI - ce qui signifie GIT dans ce cas - et ensuite prétendre que lorsque le programme a besoin d'une entrée, ce n'est plus votre problème ; si vous ne voulez pas que les gens comptent sur VC pour utiliser git, alors vous ne devriez pas avoir intégré git depuis le début, ne faites pas la moitié du logiciel spécialement s'il est censé être sauvegardé par Microsoft, et surtout pas à moitié -des bonnes pratiques de sécurité vieilles de plusieurs décennies, telles que les clés SSH avec mots de passe.

Je suppose qu'un point important ici est qu'Atom se souviendra des phrases de passe SSH pour les dépôts git. Vscode peut sûrement faire la même chose puisqu'ils sont tous deux basés sur le même moteur d'édition?

Je suppose que la question est de savoir si VSCode devrait ou non être en charge de la gestion des informations d'identification SSH / HTTPS en tant que gestionnaire de keystore.

Je ne crois pas que cela devrait, mais je ne crois pas non plus que ce soit ce qui est demandé ici. Comme @Ivanca l'a souligné, VSC a choisi de présenter une interface utilisateur par-dessus git, la question est donc de savoir combien de fonctionnalités git devraient être exposées via cette interface utilisateur. Je ne m'attendrais pas à ce que toutes les opérations git obscures soient disponibles via VSC, mais pull / push est fondamental - je ne pense pas que VSC puisse prétendre les prendre pleinement en charge sans fournir de colle d'interface utilisateur au défi sous-jacent de la phrase de passe.

Le résultat attendu est donc de lui demander le mot de passe. Je pense que c'est une demande / fonctionnalité raisonnable.

Plutôt que de montrer:

Permission denied, please try again.
Permission denied (publickey,password).

J'ai l'impression d'avoir vu cette fonctionnalité récemment sur Mac il y a quelques jours, mais peut-être qu'elle n'est pas implémentée sous Windows, ou peut-être demandait-elle mon mot de passe système pour accéder au fichier de clés système.

Edit, viens d'essayer ceci sur Mac:

image

Il semble donc que cela soit pris en charge sur Mac mais pas sur Windows (je suppose que ce problème existe toujours), donc la fonctionnalité est d'avoir la parité entre les deux OS.

Des mises à jour à ce sujet? Cela fait 2 ans que ce problème a été signalé et ne parvient toujours pas à faire fonctionner VSCode avec Git SSH:
image

Quelqu'un a-t-il essayé l'un ou l'autre de ces derniers sur Windows?

@ctsstc Je peux confirmer que cela fonctionne sous Mac dans l'onglet Terminal. Ce qui manque, c'est de demander une phrase de passe lors de l'utilisation des fonctions d'extraction pull / push de l'interface graphique. Il ignore simplement le fait que vous avez une phrase de passe sur votre clé et soumet un mot de passe nul / nul provoquant l'échec de l'opération git.

Je pense fermement que cela devrait être résolu, que VSC décide de mettre en cache les informations d'identification de la phrase de passe. N'échouez pas quand il y a une phrase de passe sur la clé rsa, demandez la clé.

Quand cela va-t-il se produire?

Cela va-t-il être corrigé? Même problème sous Windows

N'a pas l'air optimiste. J'ai abandonné et je suis passé de SSH à https.

Ma solution actuelle: j'ai généralement un terminal ouvert dans VSCode de toute façon (en l'utilisant pour interagir avec npm, etc.), donc je fais juste mon git push partir de là. Ce n'est pas ainsi que cela devrait fonctionner, mais cela me demande au moins mon mot de passe.

Sur macOS, j'ai ajouté ceci à mon ~/.ssh/config à la toute fin (ce qui est important, ne mettez rien ci-dessous):

Host *
   AddKeysToAgent yes
   UseKeychain yes 

Ensuite, j'ai fait un git pull pour que macOS me demande mon mot de passe ssh. Après cela, macOS ne me demande plus jamais le mot de passe, donc le contrôle de version de VSCode fonctionne comme il se doit.

J'espère que ça aide quelqu'un.
À votre santé!

Autres solutions de contournement:

  • Utilisez plink de putty à la place de ssh comme commad git ssh, puis utilisez pageant pour charger les clés
  • Utilisez git sur http / https au lieu de git sur ssh

Quelqu'un a-t-il essayé l'un ou l'autre de ces derniers sur Windows?

https://github.com/PowerShell/openssh-portable

J'utilise win32-openssh, comme ci-dessus, une solution de contournement en poussant git depuis le terminal. Le manque de chemins ssh: // reconnus est un problème que j'ai déjà signalé et qui est lié à cela. Mon cas d'utilisation principal est l'utilisation de l'extension sshfs avec laquelle git et d'autres extensions comme python ne fonctionnent pas car ils ne savent pas comment interpréter ssh: //

Y a-t-il un plan pour soutenir cela?

C'est toujours un problème. Les solutions de contournement ne sont pas une option pour tout le monde; par exemple, ma machine peut (potentiellement) être accédée par d'autres et donc je ne déverrouillerai pas ma clé. Dans mon cas, git sur la ligne de commande demande simplement le mot de passe, je dirais que VS Code devrait faire de même dans une fenêtre contextuelle.

En fait, assez choqué, ce n'est pas une fonctionnalité après 2 ans, je me demande toujours pourquoi cela n'a pas été repris et priorisé.

Utilisation actuelle de la version VSC 1.34.0
qwe
et le problème n'a pas été résolu.

J'ai toujours ce problème ici aussi, sous Windows 10. Je me suis débarrassé de Putty maintenant qu'OpenSSH est inclus dans Windows 10, mais VS Code ne semble pas le respecter? Je dois pousser et tirer manuellement le terminal dans VSCode, ce qui fonctionne bien, mais j'ai adoré pouvoir simplement cliquer sur un bouton pour synchroniser.

@ arcs - Il est peu probable que cela soit corrigé étant donné que git ne fournit pas un moyen d'interagir avec le processus enfant de la clé SSH. Si votre appareil est accessible par d'autres personnes, verrouillez-le lorsque vous n'êtes pas à votre bureau. Sinon, vous pouvez démarrer ssh-agent dans macOS ou Windows pour contourner ce problème comme décrit ici: https://help.github.com/en/articles/working-with-ssh-key-passphrases

@ flaw600 Ce processus ne semble aider que si je lance du code à partir de la même fenêtre git-bash où l'agent ssh a été initialisé, ce qui est un peu maladroit et empêche l'utilisation d'extensions de clic droit sur l'explorateur.

Le fait que ce soit plus de 3 ans et que ce lien soit toujours applicable semble malheureux.
https://nathan.alner.net/2015/08/24/vs-code-ide-with-passphrased-git-ssh-keys/

En ouvrant code via le menu de démarrage, il ignore l'agent ssh et ne parvient pas à tirer / pousser.

Aucune suggestion? C'est un gros problème pour faire du développement maintenant par rapport aux autres plates-formes.

L'utilisation de https est la meilleure solution depuis un certain temps. C'est tout aussi sûr, sinon plus , que vous pouvez créer des jetons spécifiques pour l'accès. Le gestionnaire d'informations d'identification Windows SCM s'occupe de tout automatiquement.

En prime, je suis presque sûr que HTTPS est en fait plus rapide que SSH.

@gdamore : toute référence de preuve à l'appui de votre affirmation selon laquelle HTTPS est
plus rapide que SSH?

Le lundi 17 juin 2019 à 11:45, gdamore [email protected] a écrit:

L'utilisation de https est la meilleure solution depuis un certain temps. C'est tout comme
sécurisé, sinon plus , car vous pouvez créer des jetons spécifiques pour l'accès.
Le gestionnaire d'informations d'identification Windows SCM s'occupe de tout automatiquement.

En prime, je suis presque sûr que HTTPS est en fait plus rapide que SSH.

-
Vous recevez ceci parce que vous avez commenté.
Répondez directement à cet e-mail, affichez-le sur GitHub
https://github.com/microsoft/vscode/issues/13680?email_source=notifications&email_token=AFLBAENFUKYEOE3WLKBGCJLP265Q7A5CNFSM4CSXV3P2YY3PNVWWWK3TULHS4DF ,
ou couper le fil
https://github.com/notifications/unsubscribe-auth/AFLBAEOC5BVCGGJ7EDXTINTP265Q7ANCNFSM4CSXV3PQ
.

Pas spécifiquement avec git, mais dans d'autres utilisations (copies de fichiers volumineux), nous l'avons vu. Je pense que cela concerne vraiment les éléments définis au niveau de la couche TCP où SSH semble avoir des valeurs plus appropriées pour une utilisation interactive, alors que HTTP a tendance à être plus optimisé pour le déplacement de fichiers, ce qui est vraiment ce que fait git dans ce cas.

Je déteste dire ça, mais ça a commencé comme par magie à travailler pour moi. Je ne sais pas s'il démarrait SSH via Powershell ou CMD - je n'en ai aucune idée! Juste un tas d'essais et ensuite cela a fonctionné comme par magie.

Sous Windows, vous pouvez utiliser pageant comme agent SSH, puis définir la variable env GIT_SSH sur plink . Ces deux outils font partie de PuTTY et sont également fournis avec TortoiseGit.

Ne me fait aucun bien sur un mac

Le mercredi 3 juillet 2019 à 11 h 44, Justin [email protected] a écrit:

Sur Windows, vous pouvez utiliser pageant comme agent SSH, puis définir env
variable GIT_SSH à plink. Ces deux outils font partie de PuTTY et aussi
livré avec TortoiseGit.

-
Vous recevez ceci parce que vous avez commenté.
Répondez directement à cet e-mail, affichez-le sur GitHub
https://github.com/microsoft/vscode/issues/13680?email_source=notifications&email_token=AFBZHXFVMRQ4DBPV2TLBBGTP5TJN7A5CNFSM4CSXV3P2YY3PNVWissWK3VBGTP5TJN7A5CNFSM4CSXV3P2YY3PNVWissWWK3VBLO52M2YY3PNVWissWK3VBLO52M2YY3PNVWissWK3VBLO52M2YY3PNVWissWK3VBLO52M2YY3PNVWissWK3VBLO52M2YY3PNVWissWWK3VBLO52M2YY3PNVWissWK3VBLO52
ou couper le fil
https://github.com/notifications/unsubscribe-auth/AFBZHXD63DGD5FUXRJYMLXDP5TJN7ANCNFSM4CSXV3PQ
.

@ Jazun713 mac fonctionne bien: https://github.com/microsoft/vscode/issues/13680#issuecomment -473190878

Pourquoi est-ce toujours une chose?

wow, donc après 3 ans, il n'est toujours pas possible de connecter le code VS via ssh, au moins pour le démarrer à partir de la ligne de commande

Eh bien, je ne me suis pas remis de la phrase de passe car je ne l'ai pas définie, mais j'ai pu laisser VSCode au moins définir pour utiliser ssh une fois ouvert en tant que racine (ou par Windows en tant qu'administrateur). C'est après avoir installé Openssh ou dans Windows avoir configuré la connexion avec Putty. Après avoir vérifié la configuration du ssh et installé, comme instruction ici https://help.github.com/en/articles/testing-your-ssh-connection . Veuillez vous référer à cela ainsi que, cela donne de nombreuses informations utiles car chaque cas dépend de la façon dont vous avez configuré votre agent ssh et le système d'exploitation (j'utilise Ubuntu 18.04) https://help.github.com/en/articles/ erreur-permission-refusée-publickey

En utilisant la version 1.36.1, je ne peux toujours pas vous connecter à Github via SSH avec une phrase de passe - j'ai dû retirer la phrase de passe de ma clé. Qu'est-ce qui est si difficile? Avec HTTPS, vous demandez un utilisateur et un mot de passe git ... (plusieurs fois, c'est pourquoi je ne veux pas l'utiliser).

C'est plutôt ennuyeux. L'utilisation d'un mot de passe avec votre clé SSH favorise une bonne sécurité. C'est techniquement une forme de 2FA (ce que vous avez: la clé + ce que vous savez: le mot de passe). J'utilise cet éditeur sur MacOS et c'est vraiment ennuyeux de sauter dans la console pour toutes les opérations git. VS Git UI échoue tout simplement. Il devrait apparaître une entrée de mot de passe

Sur macOS, j'ai ajouté ceci à mon ~/.ssh/config à la toute fin (ce qui est important, ne mettez rien ci-dessous):

Host *
   AddKeysToAgent yes
   UseKeychain yes 

Ensuite, j'ai fait un git pull pour que macOS me demande mon mot de passe ssh. Après cela, macOS ne me demande plus jamais le mot de passe, donc le contrôle de version de VSCode fonctionne comme il se doit.

J'espère que ça aide quelqu'un.
À votre santé!

Ce qui précède fonctionne pour moi. Peut-être qu'une note pourrait aller ici: https://code.visualstudio.com/docs/setup/mac

Ce serait génial pour obtenir une résolution ou une solution de rechange appropriée sous Windows.

La «solution appropriée» consiste à utiliser des URL HTTPS au lieu de SSH, avec le gestionnaire d'informations d'identification git-scm. Fonctionne parfaitement pour moi.

Envoyé de Mail pour Windows 10

De: Kai Richardson
Envoyé: mercredi 28 août 2019 09:33
À: microsoft / vscode
Cc: gdamore; Mention
Objet: Re: [microsoft / vscode] Support git avec mot de passe de clé privée (# 13680)

Ce serait génial pour obtenir une résolution ou une solution de rechange appropriée sous Windows.
-
Vous recevez cela parce que vous avez été mentionné.
Répondez directement à cet e-mail, affichez-le sur GitHub ou désactivez le fil de discussion.

@gdamore ce n'est pas la bonne solution de contournement. Ce problème concerne spécifiquement l'utilisation du protocole SSH. Certaines personnes peuvent utiliser un serveur Git où les administrateurs n'autorisent pas spécifiquement les opérations http (s) Git, donc leur dire d'utiliser https ne leur offre aucune solution.

@ Kai-Richardson Cela fonctionne sous Windows si vous configurez Git pour utiliser une commande SSH qui prend en charge un agent SSH et ouvrez la clé dans cet agent.

  1. TortoiseGit: définissez la variable env GIT_SSH sur le TortoiseGitPlink.exe dans votre dossier d'installation TortoiseGit, convertissez les clés privées au format PPK avec le puttygen.exe inclus, puis ouvrez les clés privées dans pageant.exe . Vous pouvez utiliser PuTTY au lieu de TortoiseGit, dans ce cas, définissez GIT_SSH sur plink.exe et utilisez puttygen / pageant.
  2. Installez le MS OpenSSH officiel ( lien , j'utilise chocolatey avec la fonction d'agent SSH activée), démarrez le service ssh-agent, ouvrez la clé privée avec ssh-add <path to key file> et définissez la variable d'environnement GIT_SSH sur ssh.exe (généralement C:\Program Files\OpenSSH-Win64\ssh.exe ). Mon seul problème ici est qu'après la version 8.0, il semble avoir des problèmes pour lire les clés privées avec le format traditionnel ( -----BEGIN RSA PRIVATE KEY----- , préférant plutôt le format -----BEGIN OPENSSH PRIVATE KEY----- ).

Mise à jour de mon code de studio visuel, ne peut plus interagir avec mon github via l'application. Version 1.37.1

Système d'exploitation: Windows 10 Pro: version: 10.0.17134 Build 17134

L'équipe MS déteste-t-elle simplement SSH?

Quel IDE prend en charge les codes d'accès SSH? Parce que les produits Jetbrains non plus. Vous avez donc 2 des 3 principaux fournisseurs qui ne prennent pas en charge les codes d'accès SSH de manière native (et l'autre - Github - je ne sais tout simplement pas si leur éditeur Atom prend en charge les codes d'accès SSH de manière native).

Le 29 août 2019, à 20h43, Chris Migut [email protected] a écrit:

Mis à jour par le code de Visual Studio, ne peut plus interagir avec mon github via l'application. Version 1.37.1

L'équipe MS déteste-t-elle simplement SSH?

-
Vous recevez cela parce que vous avez été mentionné.
Répondre à cet e - mail directement, voir sur GitHub https://github.com/microsoft/vscode/issues/13680?email_source=notifications&email_token=ACKS4GSGFBF2OGBCXPN55LDQHB3NLA5CNFSM4CSXV3P2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD5QI7ZA#issuecomment-526421988 , ou couper le fil https://github.com/notifications/ unsubscribe-auth / ACKS4GTHNDBY5DETIRNVX6TQHB3NLANCNFSM4CSXV3PQ .

Ai-je fait une erreur? Je viens de démarrer Kali Linux en double démarrage sur Windows

  1. Tout s'est bien passé et parfait après un long processus, mais en quelque sorte
    appareil connecté à git étant attaché et tagué ensemble et quand j'essaye de
    obtenir le chemin. Booommmmm tant de fichiers sont tirés sur mon disque dur ...
    est passe ????

PrinceKK301088

Le samedi 31 août 2019, 8 h 59, flaw600, [email protected] a écrit:

Quel IDE prend en charge les codes d'accès SSH? Parce que les produits Jetbrains
non plus. Vous avez donc 2 des 3 principaux fournisseurs qui ne prennent pas en charge SSH
les codes d'accès natifs (et l'autre - Github - je ne sais tout simplement pas si leur
L'éditeur Atom prend en charge les codes d'accès SSH de manière native).

Le 29 août 2019 à 20h43, Chris Migut [email protected]
a écrit:

Mis à jour par le code de Visual Studio, ne peut plus interagir avec mon github
via l'application. Version 1.37.1

L'équipe MS déteste-t-elle simplement SSH?

-
Vous recevez cela parce que vous avez été mentionné.
Répondez directement à cet e-mail, affichez-le sur GitHub <
https://github.com/microsoft/vscode/issues/13680?email_source=notifications&email_token=ACKS4GSGFBF2OGBCXPN55LDQHB3NLA5CNFSM4CSXV3P2YY3PNVWWK3TULiss52HS4DFVLOXGH19WWWK3TULiss42HS4DFVXGH19WWWK3TULiss42HS4DFVXGH19WWWK3TULiss42HS4DFVXGH19WWWK3TULiss42HS4DFVXGH19WWWK3TULiss42HS4DFVX63
ou couper le fil <
https://github.com/notifications/unsubscribe-auth/ACKS4GTHNDBY5DETIRNVX6TQHB3NLANCNFSM4CSXV3PQ
.

-
Vous recevez ceci parce que vous êtes abonné à ce fil.
Répondez directement à cet e-mail, affichez-le sur GitHub
https://github.com/microsoft/vscode/issues/13680?email_source=notifications&email_token=AH4ENDPM4O6N2MT3BFLXGRTQHG66NA5CNFSM4CSXV3P2YY3PNVWWK3TUL52HS4DFVomTD5BFLXGRTQHG66NA5CNFSM4CSXV3P2YY3PNVWWK3TUL52HS4DFVomTD5BFLXGRTQHG66NA5CNFSM4CSXV3P2YY3PNVWWK3TUL52HS4DFVomTD526WWWK3TUL52HS4DFVom
ou couper le fil
https://github.com/notifications/unsubscribe-auth/AH4ENDORTBRU3GTGOWJFOVLQHG66NANCNFSM4CSXV3PQ
.

Quel IDE prend en charge les codes d'accès SSH? Parce que les produits Jetbrains non plus. Vous avez donc 2 des 3 principaux fournisseurs qui ne prennent pas en charge les codes d'accès SSH de manière native (et l'autre - Github - je ne sais tout simplement pas si leur éditeur Atom prend en charge les codes d'accès SSH de manière native).

Il y a un fil en double https://puu.sh/B7qHY/57f3c89f47.png

Le lien est protégé par clé

Envoyé de mon iPhone

Le 16 septembre 2019 à 13 h 32, vitasam [email protected] a écrit:

Quel IDE prend en charge les codes d'accès SSH? Parce que les produits Jetbrains non plus. Vous avez donc 2 des 3 principaux fournisseurs qui ne prennent pas en charge les codes d'accès SSH de manière native (et l'autre - Github - je ne sais tout simplement pas si leur éditeur Atom prend en charge les codes d'accès SSH de manière native).

Le 29 août 2019 à 20h43, Chris Migut @. * > a écrit: Mis à jour par le code de Visual Studio, ne peut plus interagir avec mon github via l'application. Version 1.37.1 L'équipe MS déteste-t-elle juste SSH? - Vous recevez cela parce que vous avez été mentionné. Répondre à cet e - mail directement, voir sur GitHub <# 13680? Email_source = notifications & email_token = ACKS4GSGFBF2OGBCXPN55LDQHB3NLA5CNFSM4CSXV3P2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD5QI7ZA # issuecomment-526421988>, ou couper le fil https://github.com/notifications/unsubscribe-auth/ACKS4GTHNDBY5DETIRNVX6TQHB3NLANCNFSM4CSXV3PQ.

Il y a un fil en double sur le même problème, quelqu'un a dit que l'Atom prend en charge la clé SSH de manière native: https://puu.sh/B7qHY/57f3c89f47.png

-
Vous recevez cela parce que vous avez été mentionné.
Répondez directement à cet e-mail, affichez-le sur GitHub ou désactivez le fil de discussion.

Intéressant, je peux ouvrir le lien. Le dialogue d'Atom:
atom_ssh_key_pass

à part l'ajout des entrées de configuration ssh ci-dessus

si windows

Set-Service ssh-agent -StartupType Automatic 

dans PowerShell
maintenant, le code vs ne devrait pas demander ...

à part l'ajout des entrées de configuration ssh ci-dessus

si windows

Set-Service ssh-agent -StartupType Automatic 

dans PowerShell
maintenant, le code vs ne devrait pas demander ...

J'obtiens une erreur d'autorisation avec cette tentative. Aucune suggestion?

Set-Service: Le service 'OpenSSH Authentication Agent (ssh-agent)' ne peut pas être configuré en raison de l'erreur suivante: l'accès est refusé
À la ligne: 1 car: 1
+ Set-Service ssh-agent -StartupType Automatique
+ ~ ~ ~ ~ ~ ~ ~ ~ ~~~~
+ CategoryInfo: PermissionDenied: (System.ServiceProcess.ServiceController: ServiceController) [Set-Service], ServiceCommandException
+ FullyQualifiedErrorId: CouldNotSetService, Microsoft.PowerShell.Commands.SetServiceCommand

J'obtiens une erreur d'autorisation avec cette tentative. Aucune suggestion?

@seantma : PowerShell doit être exécuté en tant qu'administrateur pour disposer des autorisations nécessaires.

à part l'ajout des entrées de configuration ssh ci-dessus
si windows
Set-Service ssh-agent -StartupType Automatique

dans PowerShell
maintenant, le code vs ne devrait pas demander ...

Cela n'a pas aidé dans mon cas, VCode renvoie les erreurs suivantes, lorsque j'essayais de synchroniser le commit local avec l'origine (distant):

fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Il semble que VCode n'utilise pas la configuration GIT globale (nom et e-mail), est-ce possible?

J'ai fait cela et cela fonctionne (non testé avec une clé ssh avec phrase de passe):

  • Ouvrez un nouveau terminal dans Visual Code, choisissez le dossier du projet actuel si vous y êtes invité
  • VS ouvrira un terminal avec Poweshell
  • Exécutez ssh-keygen.exe -> Enter, enter, enter ..... -> clé créée en .ssh dans le dossier de l'utilisateur (normalement dans C: \ Users \)
  • Copiez le contenu de la clé (.ssh / id_rsa.pub) et ajoutez-la à la nouvelle clé dans les paramètres Github

C'est ça

Ce n'est pas une bonne solution, @ leductan-nguyen. Non seulement ce problème concerne spécifiquement les clés protégées par mot de passe, mais il ne fonctionnera tout simplement pas si vous devez avoir plusieurs clés (j'en ai une pour GitHub et une autre pour GitLab par exemple).

Des progrès avec celui-ci?

@Badbreaddead , plusieurs solutions ou contournements ont été publiés ci-dessus. Cela dépend du système d'exploitation que vous utilisez:

OS X

Suivez la solution de @ dschu-lab et ajoutez

Host *
   AddKeysToAgent yes
   UseKeychain yes 

à la _ toute fin_ de ~/.ssh/config . Si votre clé ssh n'a pas de nom standard, vous devrez peut-être également la spécifier avec IdentityFile /path/to/your/ssh/private/key comme d'autres l'ont souligné.
Vous serez ensuite invité à ajouter votre phrase secrète la toute première fois que vous l'utiliserez et elle sera ensuite stockée dans le trousseau pour toute utilisation ultérieure.

Linux

Installez le trousseau , par exemple via sudo apt install keychain , comme @ Silentz0r l'a souligné ci-dessus . Il exécute ensuite keychain --eval <ssh-key-name> , mais il semble que keychain <path-to-ssh-key> a le même effet. Ajouter soit à votre .bashrc ou équivalent devrait faire l'affaire.

les fenêtres

La solution de contournement de @geordanr est la seule qui a fonctionné pour moi. Exécutez les commandes suivantes dans Git Bash pour ajouter la clé ssh à l'agent et exécuter le code dans la même session:

$ eval `ssh-agent`
$ ssh-add /path/to/key
$ code

Si vous voulez vous éviter d'avoir à taper les deux premières commandes à chaque fois, vous pouvez également ajouter quelque chose comme

#use fix path for SSH_AUTH_SOCK so it works more then one instance of gitbash
export SSH_AUTH_SOCK="$TEMP/ssh_agent_socket"

ps | grep ssh-agent > /dev/null
RUNNING=$?;

if [ "$RUNNING" -eq "1" ] 
then
# ssh-agent is not yet running
    eval `ssh-agent -a $SSH_AUTH_SOCK`
fi
ssh-add 

dans votre fichier ~/.bashrc dans Git Bash pour démarrer automatiquement l'agent ssh (pris à partir d' ici et légèrement ajusté). Si votre clé n'a pas de nom standard, vous devrez spécifier le chemin d'accès après ssh-add , par exemple ssh-add ~/.ssh/id_rsa_personal_key .

Quel IDE prend en charge les codes d'accès SSH? Parce que les produits Jetbrains non plus. Vous avez donc 2 des 3 principaux fournisseurs qui ne prennent pas en charge les codes d'accès SSH de manière native (et l'autre - Github - je ne sais tout simplement pas si leur éditeur Atom prend en charge les codes d'accès SSH de manière native).

Le 29 août 2019 à 20h43, Chris Migut @ . * > a écrit: Mis à jour par le code de Visual Studio, ne peut plus interagir avec mon github via l'application. Version 1.37.1 L'équipe MS déteste-t-elle juste SSH? - Vous recevez cela parce que vous avez été mentionné. Répondre à cet e - mail directement, voir sur GitHub <# 13680? Email_source = notifications & email_token = ACKS4GSGFBF2OGBCXPN55LDQHB3NLA5CNFSM4CSXV3P2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD5QI7ZA # issuecomment-526421988>, ou couper le fil https://github.com/notifications/unsubscribe-auth/ACKS4GTHNDBY5DETIRNVX6TQHB3NLANCNFSM4CSXV3PQ .

PyCharm prend en charge ma clé ssh avec mot de passe sans problème, il m'a demandé la phrase de passe une fois et plus jamais et toutes les fonctionnalités de git fonctionnent comme prévu.

Exécutez les commandes suivantes dans Git Bash pour ajouter la clé ssh à l'agent et exécuter le code dans la même session:

$ eval ssh-agent
$ ssh-add / chemin / vers / clé
$ code

Pour ce que ça vaut, cela fonctionne aussi bien sous Linux - et il n'est pas nécessaire de lancer code via le terminal. Le raccourci fonctionnera bien aussi. Le terminal lui-même peut être fermé juste après ces commandes.

Je connais au moins une autre solution de contournement:

Installez ssh-askpass (sur Arch Linux, cela est fourni à la fois par le x11-ssh-askpass et aussi par les packages seahorse , et les binaires résident respectivement dans /usr/lib/ssh/ssh-askpass et /usr/lib/seahorse/ssh-askpass ). L'installation de l'un de ces packages est tout ce dont vous avez besoin. VS Code lancera la boîte de dialogue de mot de passe chaque fois que cela sera nécessaire.

Ajoutez simplement ces clés ci-dessous à votre environnement:

DISPLAY=needs-to-be-defined
SSH_ASKPASS=/mingw64/libexec/git-core/git-gui--askpass

J'aurais juré que c'était dans le jalon de janvier 2020 . 😕

Ajout à ce https://github.com/microsoft/vscode/issues/13680#issuecomment -559013132

Est-ce que puisque bash vous invite à chaque connexion à saisir votre phrase de passe, vous pouvez enchaîner l'exécution de VSCode dans un raccourci via bash. Pour l'icône, utilisez simplement celui fourni avec VSCode, probablement sous% LOCALAPPDATA% \ Programs \ Microsoft VS CodeCode.exe

Si vous avez déjà ssh-agent en cours d'exécution, cela lancera le code immédiatement. Sinon, il attendra que vous saisissiez votre mot de passe.

image

J'aimerais beaucoup vous aider. C'est l'une des rares choses que je souhaite encore que VSCode fasse, mais même sans cela, peu importe, j'aime toujours vraiment utiliser VSCode, alors merci!

Saviez-vous que Git-for-Windows est livré avec un script appelé start-ssh-agent , il se trouve dans le dossier cmd , qui est généralement ajouté au chemin de l'utilisateur sur une installation standard de Git-for-Windows. Peut-être existe-t-il un moyen d'utiliser cela pour résoudre ce problème?

Je me demande si quelqu'un peut me diriger vers une chaîne d'événements qui se produit lorsque vous cliquez sur le bouton push / pull, peut-être que nous pouvons essayer d'exécuter ce script, éventuellement dans le terminal vscode, ou dans une fenêtre contextuelle.

De plus, en plus, si l'utilisateur a déjà démarré ssh-agent, le script le trouvera généralement et utilisera simplement l'agent existant, donc une phrase de passe n'est même pas requise.

Merci!

https://github.com/microsoft/vscode/issues/13680#issuecomment -525861890 a également fonctionné pour moi, mais ce n'est pas très simple et complique les choses si vous utilisez également Git pour Windows git et bash.

Ce que j'ai trouvé sur le problème et un résumé des solutions possibles

Le principal problème dans Windows + Git pour Windows (GfW) + VSCode + SSH git repo est le suivant:

  • Si vous n'avez pas lancé l'agent ssh Windows ou GfW auparavant (ou si vous n'avez pas d'assistance / service pour le faire), il ne semble pas être en mesure de lancer ssh-agent et ssh-add. Ce n'est peut-être pas la responsabilité de VSCode, mais il est bon de savoir ou d'être averti que ssh ne fonctionne pas.
  • Si vous avez lancé l'agent ssh GfW via un .bashrc, et si vous lancez VSCode à partir du menu Démarrer / raccourci et pas de la même session (comme exécuter code partir du cli), alors VSCode n'obtient pas l'accès à l'agent ssh GfW également.
  • Si vous avez lancé la version Windows de ssh-agent et que GfW est installé, le git GfW n'utilise pas la version Windows de ssh-agent par défaut, car il est également livré avec sa propre version des outils ssh. VSCode semble utiliser le git GfW lorsqu'il est disponible, ce qui explique peut-être pourquoi il ne détecte pas que Windows ssh-agent est déjà en cours d'exécution (avec des clés ajoutées) et l'utilise.

La solution 2 est sympa, mais ce n'est pas non plus très simple, voici les étapes que j'ai suivies:

  1. Installez OpenSSH Client sous Fonctionnalités facultatives
  2. Ajoutez GIT_SSH dans les variables d'environnement, en pointant vers les outils du client OpenSSH, probablement C: \ Windows \ System32 \ OpenSSHssh.exe
  3. Basculez l'agent Open SSH sous Services sur Automatique (s'il est désactivé, le mien l'était)
  4. Exécutez ssh-add dans PowerShell et vous devriez voir votre clé ajoutée
  5. VSCode devrait maintenant pouvoir faire des trucs git avec le repo SSH
  6. Cependant, GfW git et bash n'utilise pas cet agent (j'ai essayé de pointer le bash env GIT_SSH vers les outils Windows OpenSSH mais ils refusent de travailler ensemble), et vous devez donc utiliser le script .bashrc pour démarrer l'agent et entrer la phrase de passe une autre fois lors du démarrage de GfW bash.

Pour l'instant, je m'en tiens à la solution 1, car j'utilise également des systèmes Mac et Linux et c'est bien d'avoir les mêmes outils bash / git / ssh partout.

J'ai essayé de chaîner le script Git-for-Windows appelé start-ssh-agent.cmd dans le dossier cmd, avec Code.exe dans le raccourci en tant que %COMSPEC% /C %LOCALAPPDATA%\Programs\Git\cmd\start-ssh-agent.cmd && "%LOCALAPPDATA%\Programs\Microsoft VS Code\Code.exe" et cela fonctionne, mais il a ce côté étrange effet de l'ouverture d'une deuxième instance de VSCode après avoir quitté la première instance, mais je ne sais pas pourquoi.

Si j'exécute cette ligne depuis le terminal Windows (avec ou sans le %COMSPEC% /C précédent) cela fonctionne très bien.

Une autre chose que j'ai essayé était de créer un fichier *.bat ou *.cmd avec la même commande que le raccourci, mais j'ai été surpris que cela ne fonctionne pas. VSCode démarre, mais ne peut pas tirer / pousser, et répond avec la redoutable «permission refusée (publickey)». Erreur.

J'ai également passé du temps à parcourir la base de code de l' extension Git, mais je ne savais pas où insérer le script ssh-start-agent, idéalement quand il recherche la version de Git et la trouve sous Windows, comme autour des lignes 61-148 dans git.ts puisqu'il exécute git --version il pourrait également exécuter cp.exec('start-ssh-agent.cmd') mais il devrait avoir un moyen d'obtenir la phrase de passe de l'utilisateur.

Enfin, ce sur quoi j'ai décidé était de copier start-ssh-agent.cmd dans un nouveau fichier appelé vscode-ssh-agent.cmd et de remplacer la dernière ligne où il appelle CMD par <strong i="25">@call</strong> "%LOCALAPPDATA%\Programs\Microsoft VS Code\Code.exe" . Mais je ne peux pas l'épingler sur la barre des tâches.

J'essaye actuellement d'implémenter cette fonctionnalité. C'est toujours un travail en cours, mais je devrais bientôt avoir un PR disponible.

Pour l'instant, je démarre un agent ssh, j'ajoute la clé utilisateur si git.sshPrivateKeyPath est défini, je demande à l'utilisateur son mot de passe de clé SSH si demandé, et j'utilise les variables d'environnement de l'agent pour chaque appel git.
Mes premiers tests sur une machine Windows semblent fonctionner.

J'ai lu tous les commentaires ici mais j'ai peut-être oublié quelque chose, alors n'hésitez pas à faire une remarque.

Ajout à https://github.com/microsoft/vscode/issues/13680#issuecomment -583599355 de @weiliddat; J'utilise moi-même fréquemment l'entrée du menu contextuel «Ouvrir avec VSCode» (clic droit sur le dossier) et j'ai utilisé ContextEdit pour modifier une entrée de menu contextuel lors de l'ouverture de dossiers avec VSCode pour le lancer via Git Bash, afin que VSCode ait accès au contexte SSH.

  1. Installez ContextEdit .
  2. Exécutez ContextEdit en tant qu'administrateur
  3. Trouvez "Dossier de fichiers" dans la longue liste d'extensions.
    image
  4. Double-cliquez sur l'entrée "Ouvrir avec le code" sous "Commandes Shell"
  5. Remplacez la chaîne "Ligne de commande" par "C:\Program Files\Git\bin\bash.exe" -l -c "code '%V';exit" . Assurez-vous que "C:\Program Files\Git\" correspond à votre répertoire d'installation Git pour Windows. Vous voudrez peut-être copier l'ancienne commande au cas où vous auriez besoin de réinitialiser.
  6. Cliquez sur "OK" et "Quitter"

Maintenant, si vous faites un clic droit sur un dossier pour "Ouvrir avec VSCode", cela devrait d'abord lancer Git Bash, puis ouvrir VSCode dans le bon dossier. Si vous avez correctement configuré Git Bash pour lancer votre agent SSH avant de démarrer Git Bash , cela devrait vous inviter à taper la phrase secrète une fois à chaque fois que vous redémarrez votre ordinateur. Lors de l'ouverture suivante, cela devrait ouvrir directement VSCode et configurer votre clé SSH.

Je n'ai pas pu trouver l'entrée ContextEdit en cliquant avec le bouton droit de la souris dans un dossier dans l'Explorateur, au lieu de cliquer directement avec le bouton droit sur le dossier lui-même.

Cette solution fonctionne comme un charme.

Ajoutez simplement ces clés ci-dessous à votre environnement:

DISPLAY=needs-to-be-defined
SSH_ASKPASS=/mingw64/libexec/git-core/git-gui--askpass

Ajoutez simplement ces clés ci-dessous à votre environnement:

DISPLAY=needs-to-be-defined
SSH_ASKPASS=/mingw64/libexec/git-core/git-gui--askpass

https://github.com/microsoft/vscode/issues/13680#issuecomment -575204695
Cela résout le problème! Merci beaucoup!

Veuillez consulter cette section . En bref, cela indique que vous devez démarrer VSCode partir de GitBash ou autre pour avoir les variables d'environnement requises. De plus, si vous avez vérifié ces variables dans GitBash vous pourriez obtenir quelque chose comme ceci:
.

Par exemple, si vous ne voulez pas utiliser GitBash pour démarrer VSCode chaque fois ( parce que ce non-sens! IMHO ), il est possible de les ajouter en utilisant Environment Variables window ou en utilisant une commande rundll32.exe sysdm.cpl,EditEnvironmentVariables (c'est-à-dire via cmd.exe).

Dans le résultat, cela pourrait ressembler à ça:

Maintenant, redémarrez simplement (ne rechargez pas) VSCode et cela devrait fonctionner:

Chose amusante, cela fonctionne même si DISPLAY=WTHeck , donc, il pourrait rechercher uniquement l'existence de cette variable.

Pourquoi ne pas simplement définir ces derniers ( private key file path ou SSH_ASKPASS ) comme une valeur de configuration JSON quelque part comme solution de contournement, de sorte que VSCode les ajouterait au démarrage à ses variables d'environnement internes?

Je ne connais pas très bien le fonctionnement des applications électroniques ou Windows, mais serait-il possible de développer un wrapper autour de cette solution, de sorte que lorsque VSCode s'installe, il configure automatiquement ces paramètres.

TBH pour moi, cela ne semble pas que ce serait un problème si difficile à résoudre, mais compte tenu de la façon dont cette discussion se poursuit depuis 4 ans, c'est probablement une bête de problème. Ce serait cool de voir VSCode implémenter au moins quelque chose pour que les utilisateurs puissent utiliser cette fonctionnalité git assez standard sans avoir à faire leurs propres solutions de contournement. Bien que je vois un point à souligner dans sa mise en œuvre correcte la première fois.

Merci soufiene-slimi pour votre solution de contournement et merci F8ER pour la clarification. Bien qu'il y ait une incohérence dans l'interface utilisateur, cela fonctionne au moins

Ajoutez simplement ces clés ci-dessous à votre environnement:

DISPLAY=needs-to-be-defined
SSH_ASKPASS=/mingw64/libexec/git-core/git-gui--askpass

Quelque chose de nouveau ici? Je viens de commencer à travailler avec VSCode sur WSL 2 et Git. Et parce que VSCode gèle à chaque fois que j'essayais de pousser ou de publier quelque chose, je l'ai essayé sur le terminal et cela a très bien fonctionné car là, j'avais la possibilité d'entrer ma phrase de passe.

Ce numéro est si ancien et a beaucoup de commentaires. Peut-être que quelque part est une bonne solution de contournement sans supprimer la phrase de passe de ma clé, et sans enregistrer la clé quelque part dans les configurations.

Salut les gars,

J'ai également rencontré ce problème sur mon Mac.
J'ai une clé RSA configurée et ma configuration ressemble à ceci

# GitLab.com
Host gitlab.com
  Preferredauthentications publickey
  UseKeychain yes
  AddKeysToAgent yes
  IdentityFile ~/.ssh/id_rsa

Le problème vient du terminal de code VS lorsque je pousse à l'origine avec CLI, il pousse avec succès mon code avec une invite à entrer un mot de passe.
Le problème se pose lorsque j'utilise l'interface graphique VScode pull / push / sync qu'il me donne

Please make sure you have the correct access rights
and the repository exists.
> git push -u origin v1.5_Testing
[email protected]: Permission denied (publickey).
fatal: Could not read from remote repository.

la seule différence est que l'interface graphique ne demande pas de mot de passe, c'est pourquoi je suppose qu'il échoue.

[email protected] : Autorisation refusée (publickey).
...
la seule différence est que l'interface graphique ne demande pas de mot de passe, c'est pourquoi je suppose qu'il échoue.

@mohammedpatla S'il ceci .

Cette solution avec des variables d'environnement ne m'aide pas. Je n'ai pas installé git sur Windows mais sur Ubuntu 20.04 fonctionnant sur WSL2. Il n'y a nulle part un répertoire nommé mingw64 ou un binaire nommé git-gui--askpass n'importe où.

Par conséquent, je pense également que la solution ne fonctionne pas non plus sur un Mac, @ F8ER .

Je ne peux pas exécuter VScode via git-bash sur un Mac @ F8ER

Cette solution avec des variables d'environnement ne m'aide pas. Je n'ai pas installé git sur Windows mais sur Ubuntu 20.04 fonctionnant sur WSL2. Il n'y a nulle part un répertoire nommé mingw64 ou un binaire nommé git-gui--askpass n'importe où.

Je ne peux pas exécuter VScode via git-bash sur un Mac

Savez-vous ce que c'est Environment Variable ?
@NicolasGoeddel Vous voudrez peut-être consulter ce lien sur ubuntu.com .
@mohammedpatla Vous pouvez plutôt consulter ce lien sur apple.com .

Également. s'il vous plaît, essayez d' abord Google . Par exemple, une absence de git-gui--askpass peut signifier qu'aucun paquet git-gui n'est installé, donc vous pourriez en avoir besoin.

Cette solution avec des variables d'environnement ne m'aide pas. Je n'ai pas installé git sur Windows mais sur Ubuntu 20.04 fonctionnant sur WSL2. Il n'y a nulle part un répertoire nommé mingw64 ou un binaire nommé git-gui--askpass n'importe où.

Je ne peux pas exécuter VScode via git-bash sur un Mac

Savez-vous ce que c'est Environment Variable ?
@NicolasGoeddel Vous voudrez peut-être consulter ce lien sur ubuntu.com .
@mohammedpatla Vous pouvez plutôt consulter ce lien sur apple.com .

Également. s'il vous plaît, essayez d' abord Google . Par exemple, une absence de git-gui--askpas peut signifier qu'aucun package git-gui n'est installé.

Bien sûr, je sais ce que sont les variables d'environnement. Mais pourquoi devrais-je installer une application GUI sur une machine Linux exécutée sur WSL2 alors qu'il n'est pas possible d'exécuter cette GUI? Ce n'est tout simplement pas possible sur une machine sans tête. Veuillez lire mes messages plus attentivement la prochaine fois.

Cette astuce git-gui n'est tout simplement pas la bonne solution de contournement dans mon scénario. Mais peut-être que cela fonctionne sur Mac si VSCode et le référentiel s'exécutent nativement dans le même environnement. Ensuite, @mohammedpatla n'a plus qu'à installer git-gui sur son système et doit changer les variables d'environnement.

Bien sûr, je sais ce que sont les variables d'environnement. Mais pourquoi devrais-je installer une application GUI sur une machine Linux exécutée sur WSL2 alors qu'il n'est pas possible d'exécuter cette GUI? Ce n'est tout simplement pas possible sur une machine sans tête.
Cette astuce git-gui n'est tout simplement pas la bonne solution de contournement dans mon scénario.

Pourquoi essayez-vous d'exécuter VSCode sur une machine non gui alors ou est-ce que je manque quelque chose?
Vous voudrez peut-être également consulter celui-ci .

Fonctionne bien pour moi sur mon Mac, peu importe comment je démarre vscode, mais j'ai activé l'agent ssh et connecté à mon trousseau d'informations d'identification pour qu'il démarre automatiquement.

Je n'ai pas essayé de tirer / pousser de WSL, mais j'utilise la connexion à distance du vaccin. Je suis capable d'exécuter des applications guy à partir de WSL en utilisant VcXsrv mais ce n'est pas pertinent.

L'agent ssh est-il démarré dans votre WSL? Démarrez votre terminal WSL et regardez .bashrc ou .bash_prifile , s'ils existent dans votre dossier personnel. Puis ajouter:

eval `ssh-agent`
ssh-add

Peut-être que cela aidera, mais peut-être pas. Lors de l'utilisation de wsl, j'ai trouvé que certaines choses ne fonctionnent tout simplement pas. Gardez votre terminal ouvert et synchronisez vos dépôts obtenus manuellement

Je pense que ça va trop loin, n'est-ce pas? Nous avons déjà des solutions de contournement. La solution appropriée serait que VS Code demande le mot de passe de manière native, de la même manière qu'il le fait déjà pour le nom d'utilisateur / mot de passe normal.

/ cc @ alarr46 , que dites-vous?

Bien sûr, je sais ce que sont les variables d'environnement. Mais pourquoi devrais-je installer une application GUI sur une machine Linux exécutée sur WSL2 alors qu'il n'est pas possible d'exécuter cette GUI? Ce n'est tout simplement pas possible sur une machine sans tête.
Cette astuce git-gui n'est tout simplement pas la bonne solution de contournement dans mon scénario.

Pourquoi essayez-vous d'exécuter VSCode sur une machine non gui alors ou est-ce que je manque quelque chose?
Vous voudrez peut-être également consulter celui-ci .
Tu m'as mal compris. VSCode s'exécute sous Windows et l'application et ses sources que je développe s'exécutent sur WSL 2.
Mais merci pour votre lien. Je ne savais pas comment partager les informations d'identification Git entre Windows et WSL. Je vais tester cela.

D'un autre côté, @ranolfi a raison. Tout cela reste des solutions de contournement. Ce serait mieux de régler tout ce problème. :-)

Oui, je souhaite que cela soit implémenté dans VSCode, de manière native, aussi. Une invite serait très appréciée.

Ajoutez simplement ces clés ci-dessous à votre environnement:

DISPLAY=needs-to-be-defined
SSH_ASKPASS=/mingw64/libexec/git-core/git-gui--askpass

avant de vous demander s'il devrait y avoir un espace avant les doubles tirets, il ne devrait pas y en avoir. il semble que cela devrait être un paramètre mais je pense que c'est en fait un nom de fichier ... pas d'espace

Ajoutez simplement ces clés ci-dessous à votre environnement:

DISPLAY=needs-to-be-defined
SSH_ASKPASS=/mingw64/libexec/git-core/git-gui--askpass

avant de vous demander s'il devrait y avoir un espace avant les doubles tirets, il ne devrait pas y en avoir. il semble que cela devrait être un paramètre mais je pense que c'est en fait un nom de fichier ... pas d'espace

Je pense que ça va trop loin, n'est-ce pas? Nous avons déjà des solutions de contournement. La solution appropriée serait que VS Code demande le mot de passe de manière native, de la même manière qu'il le fait déjà pour le nom d'utilisateur / mot de passe normal.

/ cc @ alarr46 , que dites-vous?

Je vais juste attendre la sortie officielle, je vais juste utiliser Git-CLI jusque-là.

Je pense que ça va trop loin, n'est-ce pas? Nous avons déjà des solutions de contournement. La solution appropriée serait que VS Code demande le mot de passe de manière native, de la même manière qu'il le fait déjà pour le nom d'utilisateur / mot de passe normal.

/ cc @ alarr46 , que dites-vous?

Je suis d'accord, c'est ce que j'ai implémenté dans cette pull request . Il doit encore être revu.

Je suis d'accord, c'est ce que j'ai implémenté dans cette pull request . Il doit encore être revu.

Très bon début, cependant. Merci beaucoup! Fusée.

Cette page vous a été utile?
0 / 5 - 0 notes