Comment passer un dépôt Github à l'authentification SSH
GitHub propose deux manières de s'authentifier avec votre dépôt : via HTTPS avec un mot de passe, et via SSH en utilisant des clés privées. Bien que les deux fonctionnent bien, si vous souhaitez changer, vous devrez configurer votre dépôt local pour utiliser les nouveaux identifiants.
Bien que SSH soit souvent le meilleur moyen d'authentifier les connexions aux serveurs Linux, Github recommande HTTPS car c'est plus facile pour les utilisateurs et cela cause moins de confusion. Cependant, c'est moins adapté pour l'automatisation, pas techniquement aussi sécurisé qu'une clé RSA, et cela peut être une source d'ennui de le taper à chaque fois, même avec la mise en cache des identifiants.
Changer est assez simple : vous devrez créer une nouvelle clé SSH si vous n'en avez pas, l'ajouter à votre compte, puis basculer votre dépôt local vers le nouvel endpoint si vous l'avez déjà cloné.
Tout d'abord, vérifiez si vous avez déjà une clé SSH. Votre clé par défaut est généralement stockée ici sur Linux/macOS :
cat ~/.ssh/id_rsa.pubSur Windows, cela dépend du programme que vous utilisez. Il est parfois stocké dans %HOMEDRIVE%%HOMEPATH%.ssh, mais cela peut être différent selon ce que vous utilisez pour Git. Dans la plupart des cas, nous recommandons d'utiliser le Windows Subsystem For Linux (WSL) qui fonctionne comme une VM et stocke la clé dans un environnement Linux traditionnel.
Si vous n'en avez pas, vous pouvez en créer un avec ssh-keygen:
ssh-keygen -t rsa -f ~/.ssh/id_rsaUne fois que vous avez la clé, allez dans les paramètres de votre utilisateur Github sous "Clés SSH et GPG" et collez le contenu de id_rsa.pub dans une nouvelle clé.
Une fois cela fait, vous devriez être authentifié, à condition que Git soit configuré pour utiliser cette clé.
Changer un dépôt HTTPS en authentification SSH
Si vous avez cloné depuis Github en utilisant HTTPS, votre dépôt sera déjà lié à Github en utilisant cette URL distante. Pour corriger cela, vous devrez supprimer la connexion distante HTTPS, généralement appelée origin, puis l'ajouter à nouveau avec le bon URI git@github qui utilise SSH.
git remote rm origin
git remote add origin git@github.com:user/repo.git
Puis poussez vers l'origine comme d'habitude :
git fetch origin
git push --set-upstream origin/master
Si vous clonez un nouveau dépôt, vous devrez simplement vous assurer qu'il est réglé sur "SSH" à l'avenir, et que l'URI est configuré comme git@github.com.
Utiliser une clé SSH différente
Si vous avez plusieurs clés SSH que vous devez utiliser, les choses peuvent se compliquer, c'est pourquoi Github recommande des mots de passe aux nouveaux utilisateurs. Supposons que vous cloniez le dépôt sur votre bureau, mais que vous souhaitiez ensuite travailler depuis votre ordinateur portable. Vous devrez soit ajouter une nouvelle clé à votre compte Github, soit transférer la clé sur l'ordinateur portable.
Si vous le pouvez, vous devriez ajouter une nouvelle clé. Github en prend en charge plusieurs pour une raison, et vous pouvez leur donner des noms différents pour les organiser. Parfois, cependant, vous n'aurez qu'une seule clé et devrez corriger les choses du côté client.
Si vous souhaitez simplement utiliser la même clé, il est acceptable de transférer id_rsa et id_rsa.pub vers la nouvelle machine. Mais, si cette machine a déjà sa propre clé SSH, vous devrez utiliser plusieurs clés.
Vous pouvez le faire en modifiant le fichier de configuration des hôtes SSH :
nano ~/.ssh/configAjoutez deux blocs avec des noms différents. Dans ce cas d'utilisation, il s'agit de configurer des clés différentes pour un compte personnel par rapport à un compte d'entreprise.
Host personal
Hostname github.com
IdentityFile ~/.ssh/githubpersonal
IdentitiesOnly yes
Host work
Hostname github.com
IdentityFile ~/.ssh/githubwork
IdentitiesOnly yes
Vous aurez besoin de deux clés nommées githubpersonal.pub et githubwork.pub, ou quel que soit le nom que vous choisissez de leur donner. Enfin, vous devrez retirer à nouveau le distant et le réajouter, en spécifiant le nom du bloc dans le fichier de configuration de l'hôte (qui peut ne pas correspondre au nom de la clé) :
git remote rm origin
git remote add origin git@personal:username/repository.git
Dans cette commande, "personnel" remplace le nom d'hôte, github.com, dans l'URL. La raison pour laquelle cela est nécessaire est que la configuration SSH choisit par défaut une clé en fonction du nom d'hôte, qui dans les blocs personnel et travail est simplement github.com. Vous devez spécifier manuellement afin que Git puisse sélectionner la bonne.



