VS-Code et Github par SSH sur Windows

Nous souhaitons connecter VS Code à Github par SSH sur Windows. Le compte github existe. Une adresse email sert d’identifiant github pour le compte. Nous souhaitons pouvoir sur Windows accéder à un dossier github d’un projet créé sur MacBookPro. Pour ce faire nous avons besoin de créer un accès ssh qui remplacera l’usuel user/pwd, pour notre identifiant de compte github.

Nous avons créé le même article pour Mac.

Vérifier si OpenSSH est installé sur Windows.

Pour vérifier si OpenSSH est installé sur votre système Windows 10, vous pouvez suivre ces étapes :

Utiliser les Paramètres Windows

  1. Ouvrez les Paramètres de Windows en appuyant sur la touche Windows + I.
  2. Allez dans Applications > Applications et fonctionnalités > Fonctionnalités facultatives.
  3. Faites défiler la liste pour voir si Client OpenSSH est déjà installé. Si c’est le cas, il apparaîtra dans la liste des fonctionnalités installées[1][2][6][8][10].

Utiliser PowerShell

  1. Ouvrez PowerShell en tant qu’administrateur. Pour cela, tapez « PowerShell » dans la barre de recherche de Windows, faites un clic droit sur l’application PowerShell et sélectionnez Exécuter en tant qu’administrateur.
  2. Tapez la commande suivante et appuyez sur Entrée :
   Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'

Cette commande affichera le statut du Client OpenSSH et du Serveur OpenSSH (s’ils sont installés ou non)[4][7].

Résultat :

Windows PowerShell
Copyright (C) Microsoft Corporation. Tous droits réservés.

Testez le nouveau système multiplateforme PowerShell https://aka.ms/pscore6

PS C:\Windows\system32> Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'


Name  : OpenSSH.Client~~~~0.0.1.0
State : Installed

Name  : OpenSSH.Server~~~~0.0.1.0
State : NotPresent



PS C:\Windows\system32>

Vérifier avec la Commande SSH

Une autre méthode rapide pour vérifier la bonne installation du client OpenSSH consiste à utiliser la commande SSH directement :

  1. Ouvrez l’invite de commande (cmd) ou PowerShell.
  2. Tapez ssh et appuyez sur Entrée.
  3. Si OpenSSH est installé, vous verrez un résumé des options de commande pour SSH. Si ce n’est pas le cas, vous recevrez un message indiquant que ‘ssh’ n’est pas reconnu comme une commande interne ou externe[3][6][7][8].

Résultat :

PS C:\Windows\system32> ssh
usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface]
           [-b bind_address] [-c cipher_spec] [-D [bind_address:]port]
           [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11]
           [-i identity_file] [-J [user@]host[:port]] [-L address]
           [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
           [-Q query_option] [-R address] [-S ctl_path] [-W host:port]
           [-w local_tun[:remote_tun]] destination [command]
PS C:\Windows\system32>

Ces méthodes permettent de vérifier rapidement l’installation d’OpenSSH sur votre système Windows 10. Si OpenSSH n’est pas installé et que vous souhaitez l’ajouter, vous pouvez le faire via les Fonctionnalités facultatives dans les Paramètres Windows ou en utilisant la commande Add-WindowsCapability dans PowerShell[1][2][4][5][6][7][10][11].

Références:
[1] https://petri.com/the-ultimate-guide-to-installing-openssh-on-windows/
[2] https://learn.microsoft.com/fr-fr/windows-server/administration/openssh/openssh_install_firstuse
[3] https://mkyong.com/linux/check-openssh-version/
[4] https://www.kassianoff.fr/blog/microsoft/installation-configuration-openssh-powershell/
[5] https://www.it-connect.fr/installer-et-configurer-openssh-server-sur-windows-server-2019/
[6] https://www.ionos.fr/digitalguide/serveur/configuration/activer-le-client-ssh-de-windows-10/
[7] https://www.it-connect.fr/comment-utiliser-le-client-ssh-natif-de-windows-10/
[8] https://www.bugshunter.net/Post/Details/57/verifier-linstallation-du-client-ssh-sur-windows-10/
[9] https://learn.microsoft.com/fr-fr/windows-server/administration/openssh/openssh_keymanagement
[10] https://www.pcastuces.com/pratique/astuces/5235.htm
[11] https://www.malekal.com/activer-et-installer-le-serveur-openssh-sur-windows-10/

Générer une paire de clé SSH

Ouvrez l’invite de commande ou PowerShell.

Tapez la commande suivante et remplacez « votre_email@example.com » par l’adresse e-mail GitHub :

  ssh-keygen -t ed25519 -C "votre_email@example.com"

Nous remplaçons « votre_email@example.com » par notre adresse email utilisée comme identifaint github.

Lorsqu’on vous demande où sauvegarder la nouvelle clé, appuyez sur Entrée pour accepter l’emplacement par défaut[10][13]. Nous ne mettons pas de passphrase :

PS C:\Windows\system32>    ssh-keygen -t ed25519 -C "votre_email@example.com"
Generating public/private ed25519 key pair.
Enter file in which to save the key (C:\Users\broussel/.ssh/id_ed25519):
Created directory 'C:\Users\broussel/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in C:\Users\broussel/.ssh/id_ed25519.
Your public key has been saved in C:\Users\broussel/.ssh/id_ed25519.pub.
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx votre_email@example.com
The key's randomart image is:
+--[ED25519 256]--+
| ......|
| ......|
| ......|
| ......|
| ......|
+----[SHA256]-----+
PS C:\Windows\system32>

Après génération, les clés public et privé se trouve dans des dossiers :

  • C:\Users\broussel/.ssh/id_ed25519
  • C:\Users\broussel/.ssh/id_ed25519.pub.

Ajouter la clé SSH au ssh-agent

Vérifier ssh-agent

Ouvrez PowerShell en tant qu’administrateur.

Exécutez la commande suivante pour vérifier le statut du service ssh-agent :

Get-Service ssh-agent

Vous devez changer le type de démarrage afin qu’il soit actif.

Résultat :

PS C:\Windows\system32> Get-Service ssh-agent

Status   Name               DisplayName
------   ----               -----------
Stopped  ssh-agent          OpenSSH Authentication Agent


PS C:\Windows\system32>

Démarrer ssh-agent en mode mannuel

Toujours dans PowerShell administrateur, exécutez la commande suivante pour configurer le service ssh-agent pour qu’il démarre manuellement :

Set-Service ssh-agent -StartupType Manual

Après avoir configuré le type de démarrage, démarrez le service en exécutant :

Start-Service ssh-agent

Démarrer ssh-agent en mode automatique

Ouvrez PowerShell en tant qu’administrateur.

Exécutez la commande suivante pour configurer le service ssh-agent pour qu’il démarre automatiquement avec le système :

Set-Service -Name ssh-agent -StartupType Automatic

Cette étape est recommandée par les sources[1][2][4][5][6][7][10][11] et permet de s’assurer que le service ssh-agent sera démarré automatiquement lors du démarrage de Windows.

Après avoir configuré le type de démarrage, démarrez le service en exécutant :

Start-Service ssh-agent

Cette commande démarre le service ssh-agent qui est nécessaire pour gérer vos clés SSH[1][2][3][4][5][6][7][10][11].

Vérifier le statut du service

Pour confirmer que le service ssh-agent est maintenant en cours d’exécution, exécutez :

Get-Service ssh-agent

Résultat :

PS C:\Windows\system32> Set-Service -Name ssh-agent -StartupType Automatic
PS C:\Windows\system32> Start-Service ssh-agent
PS C:\Windows\system32> Get-Service ssh-agent

Status   Name               DisplayName
------   ----               -----------
Running  ssh-agent          OpenSSH Authentication Agent


PS C:\Windows\system32>

Ajoutez votre clé SSH privée au ssh-agent.

Vérifiez que le ssh-agent est en cours d’exécution :
Ouvrez PowerShell et exécutez la commande suivante pour démarrer le ssh-agent :

   Start-Service ssh-agent

Localisez votre clé privée SSH :
Assurez-vous que le fichier de votre clé privée existe bien dans le répertoire .ssh de votre profil utilisateur. Par défaut, ce répertoire se trouve à C:\Users\<VotreNomUtilisateur>\.ssh\. Remplacez <VotreNomUtilisateur> par votre nom d’utilisateur Windows.

Utilisez le chemin complet de la clé privée :
Utilisez le chemin complet sous Windows. Par exemple :

   ssh-add C:\Users\<VotreNomUtilisateur>\.ssh\id_ed25519

Remplacez <VotreNomUtilisateur> par votre nom d’utilisateur Windows et id_ed25519 par le nom de votre fichier de clé privée si vous avez utilisé un nom différent lors de la création de la clé.

Exécutez la commande ssh-add avec le chemin correct :
Dans PowerShell, exécutez la commande ssh-add avec le chemin complet vers votre clé privée SSH.

ssh-add chemin\vers\votre\clé_privée

Résultat :

  ssh-add C:\Users\broussel/.ssh/id_ed25519

on a la clé ajoutée :

PS C:\Windows\system32>    ssh-add C:\Users\broussel/.ssh/id_ed25519
Identity added: C:\Users\broussel/.ssh/id_ed25519 (votre_email@example.com)
PS C:\Windows\system32>

Ajout de la clé public ssh au compte Github

Ouvrez le fichier de votre clé publique SSH en utilisant un éditeur de texte. Par exemple :

notepad C:\Users\broussel/.ssh/id_ed25519.pub

Copiez le contenu du fichier.

Connectez-vous à votre compte GitHub et allez dans « Settings » > « SSH and GPG keys » > « New SSH key ».

Collez votre clé publique dans le champ « Key » et donnez-lui un titre descriptif[1][2].

[1] https://docs.github.com/en/enterprise-server%403.11/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account
[2] https://docs.github.com/fr/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account

Tester la connection ssh sans vs code vers github sur windows

Ouvrez votre terminal.

Tapez la commande suivante pour tester votre connexion.

   ssh -T [email protected]

Github affiche un message de bienvenue de GitHub lors de la connection.

Explication

La commande ssh -T [email protected] est utilisée pour tester votre connexion SSH à GitHub. Voici une explication détaillée de chaque partie de la commande :

  • ssh : C’est le programme utilisé pour établir des connexions sécurisées à distance via le protocole SSH (Secure Shell). Il permet de se connecter de manière sécurisée à un serveur distant.
  • -T : Cette option désactive l’allocation d’un terminal distant. Pour tester la connexion, inutile de démarrer une session interactive sur le serveur GitHub.
  • git@github.com : Cette partie spécifie l’utilisateur et l’hôte auquel vous essayez de vous connecter. Dans ce cas, git est le nom d’utilisateur utilisé par GitHub pour les connexions SSH, et github.com est l’adresse du serveur GitHub. Il est important de noter que git est un nom d’utilisateur générique utilisé par GitHub et ne doit pas être remplacé par votre nom d’utilisateur GitHub ou votre adresse e-mail.

La confusion peut survenir de l’interprétation de git@github.com comme une adresse e-mail, mais en réalité, c’est la syntaxe standard pour spécifier un utilisateur et un hôte dans une commande SSH. Lorsque vous exécutez cette commande, SSH tente d’établir une connexion sécurisée avec le serveur GitHub en utilisant la clé SSH privée correspondant à une clé publique que vous avez préalablement ajoutée à votre compte GitHub. GitHub, affiche un message de bienvenue confirmant la connexion établie avec succès, sans accès shell interactif[1][2].

Si vous rencontrez l’erreur « ssh: Could not resolve hostname [email: Hôte inconnu », cela signifie qu’il y a eu une erreur de saisie dans la commande. Assurez-vous que la commande est saisie correctement comme ssh -T git@github.com sans espaces ou caractères supplémentaires accidentels.

Citations:
[1] https://docs.github.com/en/authentication/connecting-to-github-with-ssh
[2] https://docs.github.com/en/authentication/connecting-to-github-with-ssh/testing-your-ssh-connection
[3] https://gist.github.com/zulhfreelancer/54297b693233887be78bf061d7500cf9
[4] https://gist.github.com/ddeveloperr/9574740628637bc2a127
[5] https://stackoverflow.com/questions/66080774/testing-github-ssh-connection-error-permission-denied-publickey-how-to-fix
[6] https://www.youtube.com/watch?v=Sjk-NRsNOBc
[7] https://github.com/sshnet/SSH.NET
[8] https://github.com/omidmohajers/ssh-tester

Résultat :

PS C:\Windows\system32> ssh -T git@github.com
The authenticity of host 'github.com (140.82.121.3)' can't be established.
ECDSA key fingerprint is SHA256:xxxxxxxxxx/xxxxxxxx/xxxxxxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'github.com,000.000.000.000' (ECDSA) to the list of known hosts.
Hi copier-coder! You've successfully authenticated, but GitHub does not provide shell access.
PS C:\Windows\system32>

La connection fonctionne

Clôner dans vs-code un dossier github avec ssh sur windows

choisir « Clone git repository » à l’ouverture de VS Code.

Copier le chemin ssh dans github depuis [Code] dans le dossier du projet souhaité

Coller ce lien en haut dans la popup d’ouverture de VS Code ouverte par la commande « clone git repository ».

La commande demande de choisir le dossier dans lequel installer le projet.

Si vous avez aimé l'article vous êtes libre de le partager :-)

Laisser un commentaire