Je travaille avec un référentiel sur GitHub et chaque fois que j'essaie de pousser quelque chose, il me demande mon nom d'utilisateur et mon mot de passe GitHub. Je ne le veux pas faire ça.
J'ai essayé les instructions sur configurer votre email dans Git , à savoir configurer les variables Git github.user et github.token, mais cela n'a pas changé.
Je ne comprends pas pourquoi cela se passe.
Vous devez configurer un agent ssh par rapport auquel vous ne devez vous authentifier qu'une seule fois. Voir cette réponse plus à SO pour un howto.
J'ai eu un problème similaire aujourd'hui: j'ai gâché ma copie de travail, j'ai donc décidé de renommer le répertoire et de cloner à nouveau mon projet depuis github. Mais après cela, je devais entrer mon mot de passe pour faire n'importe quelle requête pull/push, au lieu de saisir la phrase secrète une seule fois comme auparavant.
C'est parce qu'aujourd'hui j'ai utilisé le protocole https pour cloner le projet! Pour vérifier le protocole que vous utilisez, lancez simplement
git config -l
et regardez la ligne commençant par 'remote.Origin.url'.
Pour changer de protocole:
git config remote.Origin.url [email protected]:the_repository_username/your_project.git
the_repository_username
et your_project
doivent être remplacés par le nom de référentiel approprié et le propriétaire de ce référentiel. Le nom d'utilisateur vous appartiendra si vous possédez le référentiel, ou le nom d'utilisateur du propriétaire du référentiel dans le cas contraire.
Si vous utilisez HTTPS au lieu de SSH, vous pouvez suivre ceci:
Recherchez votre URL distante (remote.Origin.url) avec
git config -l
grâce à Sergio Morstabilini
Votre URL distante ressemblera à ceci: https: // {USERNAME} @ github.com/{USERNAME}/{REPONAME} .git
Exécutez cette commande:
git config remote.Origin.url https://{USERNAME}:{PASSWORD}@github.com/{USERNAME}/{REPONAME}.git
Je préfère utiliser HTTPS, je trouve cela plus facile et plus sécurisé que de configurer les clés ssh.
En utilisant HTTPS, vous pouvez empêcher git de demander votre nom d'utilisateur pour les télécommandes github avec les éléments suivants:
git config --global url."https://[email protected]".insteadOf "https://github.com"
Et vous pouvez au moins réduire la fréquence à laquelle git vous demande votre mot de passe avec:
git config --global credential.helper 'cache --timeout=28800'
Où 28800 sont 8 heures. J'utilise cette configuration pour entrer mon mot de passe une seule fois, lorsque je commence ma journée de travail.
Après cela, vous aurez ces entrées dans votre ~/.gitconfig
[url "https://[email protected]"]
insteadOf = https://github.com
[credential]
helper = cache --timeout=28800
La source:
Lorsque vous configurez une clé ssh pour github, si ce n'est pas votre clé par défaut, vous devrez ajouter une section à votre ~/.ssh/config
Host *github.com
User git
IdentityFile ~/.ssh/github_id_rsa
Si vous utilisez Windows avec HTTPS, essayez le Git Credential Store -. Il utilise le Windows Credential Store pour contenir votre nom et votre mot de passe.
Windows Credential Store for Git
This application is a small helper app designed to follow the
git credentials API as defined by the Git Documentation.
Installation
1. Download the git-credential-winstore.exe application
2. Run it! If you have GIT in your PATH, it should just work.
Ensuite, la prochaine fois que vous entrez votre nom et votre mot de passe, ils s'en souviendront pour vous.
De même, si vous souhaitez que votre mot de passe vous soit demandé à chaque fois, mais pas votre nom d'utilisateur, configurez la télécommande en tant que HTTPS avec un nom d'utilisateur.
git config remote.Origin.url https://[email protected]/repo_owner/repo_name
Après cela, votre mot de passe vous sera demandé à chaque fois, mais pas votre nom d'utilisateur.
C'est ce que je préfère, car j'aime être obligé de taper mon mot de passe github avant de le partager avec le monde.
Pour éviter que GitHub ne demande le mot de passe en appuyant, vous devriez idéalement utilisez SSH ([email protected]:...
) au lieu de l'URL HTTPS (https://github.com/...
) et ajoutez votre clé SSH à votre compte GitHub . Voir: Quelle URL distante devrais-je utiliser?
Sinon, si vous avez vraiment besoin d'utiliser HTTPS, pour mettre en cache votre mot de passe GitHub dans Git , vous devez utiliser assistant d'identification pour indiquer à Git de mémoriser votre nom d'utilisateur et votre mot de passe GitHub chaque fois qu'il parle à GitHub.
git config --global credential.helper osxkeychain
(osxkeychain helper
est requis),git config --global credential.helper wincred
git config --global credential.helper cache
.netrc
Une autre méthode consiste à configurer votre utilisateur/mot de passe dans ~/.netrc
(_netrc
sous Windows), par exemple.
machine github.com
login USERNAME
password PASSWORD
Utilisez Jeton OAuth ( Jeton API personnelle ) pour Transférer les modifications, par exemple.
git Push https://[email protected]/foo/bar
En relation:
Les choses sont un peu différentes si vous utilisez une authentification à 2 facteurs comme je le suis. Comme je n’ai pas trouvé de bonne réponse ailleurs, je vais en coller une ici pour pouvoir la trouver plus tard.
Si vous utilisez une authentification à 2 facteurs, alors spécifier un nom d'utilisateur/mot de passe ne fonctionnera pas - vous obtiendrez un accès refusé. Mais vous pouvez utiliser un jeton d'accès à une application et utiliser l'assistant des informations d'identification de git pour le mettre en cache pour vous. Voici les liens pertinents:
Et je ne me souviens pas où j'ai vu cela, mais lorsqu'on vous demande votre nom d'utilisateur, c'est là que vous collez le jeton d'accès à l'application. Ensuite, laissez le mot de passe vide. Travaillé sur mon mac.
De plus, si vous utilisez Windows, vous pouvez utiliser:
$ git config --global credential.helper wincred
il vous suffit de vous connecter une fois de plus, puis git s'en souviendra.
Demander le nom d'utilisateur m'énerve, mais demander un mot de passe, c'est gentil, car cela vous donne vraiment envie de rendre public vos modifications ...
Donc, je viens d'ajouter ceci à mon ".gitconfig"
[url "https://[email protected]"]
insteadOf = https://github.com
Utilisez Git Credential Manager for Windows , si vous utilisez Windows.
Ce projet comprend :
- Stockage sécurisé des mots de passe dans Windows Credential Store
- Prise en charge de l'authentification multifacteur pour Visual Studio Team Services
- Prise en charge de l'authentification à deux facteurs pour GitHub
- Prise en charge de l'utilisation et de la génération de jetons d'accès personnel pour Visual Studio Team Services et GitHub
- Prise en charge en mode non interactif de Visual Studio Team Services s'appuyant sur Azure Directory
- Authentification Kerberos pour Team Foundation Server
- Paramètres facultatifs pour l'optimisation de l'agent de génération
Simplement téléchargez la dernière version } _ et installez-le.
Comment utiliser
Vous pas. Cela fonctionne magiquement lorsque des informations d'identification sont nécessaires.