Cela fait un moment que je n'ai rien poussé vers GitHub. J'avais initialement configuré mon compte sur mon ordinateur et tout fonctionnait très bien. Ensuite, j'ai changé mon compte en un compte client (afin que je puisse pousser le code vers leur référentiel privé).
Cela fait un moment et maintenant je reviens à mon ancien compte et j'ai des problèmes. J'ai généré un nouveau rsa_key et suivi à peu près les instructions ici à un T.
Cependant, lorsque je tape: ssh -T [email protected]
Je reçois:
Salut oldincorrectusername! Vous vous êtes authentifié avec succès, mais GitHub ne fournit pas d'accès Shell.
Je ne peux pas non plus pousser vers mes dépôts, car cet ancien nom d'utilisateur client n'est pas autorisé. J'ai vérifié deux fois mes clés ssh sur mon ordinateur et sur les paramètres de mon compte sur GitHub.
J'ai également défini mes variables de compte globales:
git config --global user.name "Firstname Lastname"
git config --global user.email "[email protected]"
git config --global github.user username
git config --global github.token 0123456789yourf0123456789token
Et il me donne toujours l'ancien nom d'utilisateur.
Aucune suggestion?
Merci,
Le problème est que votre local ssh offre toujours votre "ancienne" clé SSH à GitHub. Cela se produit souvent lorsque vous avez une clé reconnue par GitHub (c'est-à-dire votre "ancienne" clé) chargée dans un ssh-agent mais que vous souhaitez utiliser une autre clé reconnue par GitHub (c'est-à-dire votre "nouvelle" clé ).
ssh propose les clés dans cet ordre:
Par "clés spécifiées", j'entends les clés spécifiées par le -i
option de ligne de commande ou l'option de configuration IdentityFile
(qui peut être fournie via ~/.ssh/config
ou la -o
option de ligne de commande).
Si votre "ancienne" clé est chargée dans l'agent, mais pas votre "nouvelle" clé, alors ssh proposera toujours votre "ancienne" clé (de la première ou de la deuxième catégorie) avant votre "nouvelle" "(Uniquement dans la dernière catégorie car elle n'est pas chargée), même lorsque vous spécifiez votre" nouvelle "clé avec -i
/IdentitiesOnly
.
Vous pouvez vérifier quelles clés sont chargées dans votre ssh-agent avec ssh-add -l
. Si votre "ancienne" clé est répertoriée, vous pouvez résoudre le problème en la déchargeant de votre agent (assurez-vous également de décharger toutes les autres clés reconnues par GitHub, sauf peut-être votre "nouvelle" clé):
ssh-add -d ~/.ssh/old_key_file
Si vous utilisez Mac OS X, le système peut charger automatiquement votre "ancienne" clé si vous avez coché "Mémoriser le mot de passe dans mon trousseau" lorsque vous êtes invité à entrer le mot de passe à un moment donné; vous pouvez désactiver ce chargement automatique en supprimant l'entrée du trousseau pour la clé avec la commande/usr/bin/ssh-add -K -d ~/.ssh/old_key_file
. D'autres systèmes peuvent faire quelque chose de similaire, mais les commandes pour leur dire d'arrêter cela seront différentes.
Au lieu de décharger "l'ancienne" clé de votre agent, vous pouvez définir l'option de configuration IdentitiesOnly
sur yes
, pour indiquer à ssh d'ignorer la deuxième catégorie de clés ( clés chargées par l'agent non spécifiées). Votre ~/.ssh/config
pourrait inclure une section comme celle-ci:
Host github.com
User git
IdentityFile ~/.ssh/id_rsa # wherever your "new" key lives
IdentitiesOnly yes
De cette façon, peu importe si d'autres clés reconnues par GitHub sont chargées dans votre agent; ssh n'offrira toujours que votre "nouvelle" clé.
Si vous prévoyez d'avoir besoin d'accéder aux référentiels des deux comptes GitHub et que vous ne souhaitez pas avoir à modifier le fichier de configuration chaque fois que vous souhaitez basculer entre les comptes GitHub, vous pouvez configurer votre ~/.ssh/config
comme ça:
Host clientname.github.com
HostName github.com
IdentityFile ~/.ssh/client_id_rsa # or wherever your "old" client key lives
Host github.com
IdentityFile ~/.ssh/id_rsa # or wherever your "new" key lives
Host github.com *.github.com
User git
Hostname github.com
IdentitiesOnly yes
Utilisez ensuite des URL comme github.com:GitHubAccount/repository
pour vos référentiels et URL comme clientname.github.com:GitHubAccount/repository
pour les référentiels de votre client (vous pouvez mettre le git@
préfixez si vous le souhaitez, mais ce n'est pas nécessaire car les entrées ci-dessus définissent la variable de configuration User
).