Comment puis-je m'assurer que Git ne me demande pas mon nom d'utilisateur et mon mot de passe GitHub?

172

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 pour configurer votre email dans Git , à savoir configurer les variables Git github.user et github.token, mais cela ne faisait aucune différence.

Je ne comprends pas pourquoi cela se passe.

picardo
la source
Vous devez mettre en cache le mot de passe: help.github.com/articles/set-up-git#password-caching
Piotr Usewicz le

Réponses:

33

Vous devez configurer un agent ssh sur lequel vous ne devez vous authentifier qu'une seule fois. Voir cette réponse à SO pour un howto.

Benjamin Bannier
la source
1
Mais cette solution est pour les phrases ssh-family. Le problème est que git utilise "git push", ce qui ne déclenche pas l'agent ssh, je suppose. (J'ai déjà fait cela, alors je sais que ça ne marche pas.)
picardo
2
@picardo: C'est ce que j'ai fait et ça marche.
Daenyth
213

J'ai eu un problème similaire aujourd'hui: j'ai tout gâché dans ma copie de travail, alors j'ai 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 toute demande d'extraction / de poussée, au lieu d'entrer le mot de passe composé 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_usernameet your_projectdoit être remplacé 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.

Sergio Morstabilini
la source
5
Cela a fonctionné pour moi. Une chose est que l'URL ne contient pas mon nom d'utilisateur mais l'adresse du dépôt telle qu'elle apparaît sur github:[email protected]:some-user/repo-name.git
B Seven
1
Remarque: Google m'a amené ici. J'ai eu le remote.origin.urljeu à la méthode https et je n'ai même pas remarqué qu'il y avait httpsvs sshméthodes. Cette URL m'a aidé à voir l'évidence: help.github.com/articles/…
Chris K
Est-il possible de passer un mot de passe aussi?
Zishe
Q pour ceux qui ont des connaissances git: Toute différence (ou préférence) entre git config remote.origin.url ...utilisé ci-dessus, vs git remote set-url origin ...?
Daryn
Je ne pouvais pas comprendre comment supprimer une origine erronée comme celle-là. La réponse est:git remote rm origin
Vacilando
30

Si vous utilisez HTTPS au lieu de SSH, vous pouvez suivre ceci:

  1. Recherchez votre URL distante (remote.origin.url) avec

    git config -l
    

    grâce à Sergio Morstabilini

  2. Votre URL distante ressemblera à ceci: https: // {USERNAME} @ github.com / {USERNAME} / {REPONAME} .git

  3. Exécutez cette commande:

    git config remote.origin.url https://{USERNAME}:{PASSWORD}@github.com/{USERNAME}/{REPONAME}.git
    
Eray
la source
2
mon nom d'utilisateur lui-même contient @n'a pas fonctionné pour moi.
coding_idiot
Mais si ce n'est pas le cas (vous n'avez pas besoin d'utiliser votre email), cela fonctionne parfaitement! Merci.
Killah
4
Si votre nom d'utilisateur comprend un @, vous devez le coder par URL. meyerweb.com/eric/tools/dencoder
Tim Bodeit
1
Vous devez omettre votre mot de passe pour des raisons de sécurité.
Zygimantus
3
Attention, le mot de passe sera stocké en clair dans le .git/configfichier!
Amro
26

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 de 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:

http://git-scm.com/docs/git-credential-cache

http://git-scm.com/docs/git-config

stefanmaric
la source
6

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
Daenyth
la source
6

Si vous utilisez Windows avec HTTPS, essayez Git Credential Store . Il utilise 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.

Brian Burns
la source
1
Je vous remercie. Le projet a été renommé Git-Credential-Manager-for-Windows .
Michael S.
5

De plus, 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.

David Jeske
la source
2

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 retrouver plus tard.

Si vous utilisez une authentification à 2 facteurs, alors spécifier un nom d'utilisateur / mot de passe ne fonctionnera pas - votre accès sera 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.

John Berryman
la source
2

utiliser SSH

Pour éviter que GitHub ne demande le mot de passe lorsque vous appuyez, utilisez idéalement SSH ( [email protected]:...) au lieu de HTTPS URL ( https://github.com/...) et ajoutez votre clé SSH à votre compte GitHub . Voir: Quelle URL distante devrais-je utiliser?

GitHub - Cloner avec SSH

un assistant d'identification

Sinon, si vous devez vraiment utiliser HTTPS pour mettre en cache votre mot de passe GitHub dans Git , vous devez utiliser un assistant d'identification pour permettre à Git de se souvenir de votre nom d'utilisateur et de votre mot de passe GitHub chaque fois qu'il parle à GitHub.

  • Mac: git config --global credential.helper osxkeychain( osxkeychain helperest requis),
  • Les fenêtres: git config --global credential.helper wincred
  • Linux et autres: git config --global credential.helper cache

.netrc

Une autre méthode consiste à utiliser configurer votre utilisateur / mot de passe dans ~/.netrc( _netrcsous Windows), par exemple

machine github.com
login USERNAME
password PASSWORD

OAuth

Utilisez le jeton OAuth ( jeton API personnelle ) pour appliquer les modifications, par exemple:

git push https://[email protected]/foo/bar

Apparenté, relié, connexe:

Kenorb
la source
1

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.

William Earl Cheaqui
la source
1

Demander le nom d'utilisateur m'énerve, mais demander un mot de passe est agréable, car cela vous permet de rendre public vos modifications ...

Donc, je viens d'ajouter ceci à mon ".gitconfig"

[url "https://[email protected]"]
    insteadOf = https://github.com
ViToni
la source
0

Utilisez Git Credential Manager pour 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

Téléchargez simplement la dernière version et installez-la.

Comment utiliser

Vous pas. Cela fonctionne comme par magie lorsque des informations d'identification sont nécessaires.

Jalal
la source