Question Git push nécessite un nom d'utilisateur et un mot de passe


J'ai cloné un dépôt git de mon compte Github sur mon PC.

Je veux travailler avec mon PC et mon ordinateur portable, mais avec un compte Github.

Lorsque j'essaie de pousser ou de tirer de Github en utilisant mon PC, il faut un nom d'utilisateur et un mot de passe, mais pas lors de l'utilisation de l'ordinateur portable!

Je ne veux pas entrer mon nom d'utilisateur et mon mot de passe chaque fois que j'interagis avec l'origine. Qu'est-ce qui me manque ici?


1069
2017-07-03 20:25


origine


Réponses:


Une erreur courante est le clonage en utilisant la valeur par défaut (HTTPS) au lieu de SSH. Vous pouvez corriger cela en allant dans votre dépôt, en cliquant sur "Cloner ou télécharger", puis en cliquant sur le bouton "Utiliser SSH" au-dessus du champ URL et en mettant à jour l'URL de votre télécommande d'origine comme ceci:

git remote set-url origin git@github.com:username/repo.git

Ceci est documenté à GitHub: Passer des URL distantes de HTTPS à SSH.


1579
2017-07-03 21:25



Authentification permanente avec les référentiels Git,

Exécutez la commande suivante pour activer mise en cache des informations d'identification:

$ git config credential.helper store
$ git push https://github.com/repo.git

Username for 'https://github.com': <USERNAME>
Password for 'https://USERNAME@github.com': <PASSWORD>

L'utilisation devrait également spécifier la mise en cache expire,

git config --global credential.helper 'cache --timeout 7200'

Après avoir activé la mise en cache des informations d'identification, il sera mis en cache pour 7200 secondes (2 heures).


172
2018-02-17 13:30



Je suis juste tombé sur le même problème, et la solution la plus simple que j'ai trouvée était d'utiliser l'URL SSH au lieu de celle de HTTPS:

ssh://git@github.com/username/repo.git

Et pas ça:

https://github.com/username/repo.git

Vous pouvez maintenant valider avec juste la SSH Key à la place du username et password.


109
2018-06-14 07:19



En plus de passer en SSH, vous pouvez également continuer à utiliser HTTPS, si cela ne vous dérange pas de mettre votre mot de passe en clair. Mettez ceci dans votre ~/.netrc et il ne demandera pas votre nom d'utilisateur / mot de passe (au moins sur Linux et Mac):

machine github.com
       login <user>
       password <password>

Une addition (voir le 2ème commentaire de VonC): sous Windows le nom du fichier est %HOME%\_netrc.

Lisez aussi le premier commentaire de VonC au cas où vous voudriez crypter.

Un autre ajout (voir le commentaire de user137717) que vous pouvez utiliser si vous avez git 1.7.10 ou plus récent.

Mettre en cache votre mot de passe github dans git à l'aide d'un assistant d'informations d'identification :

Si vous clonez des référentiels GitHub à l'aide de HTTPS, vous pouvez utiliser un   aide d'identification pour dire à Git de se souvenir de votre nom d'utilisateur GitHub et   mot de passe chaque fois qu'il parle à GitHub.

Cela fonctionne aussi sur Linux, Mac et Windows.


105
2018-01-19 19:08



Pour les non initiés qui sont confus par les réponses précédentes, vous pouvez faire:

git remote -v

qui répondra quelque chose comme

origin  https://yourname@github.com/yourname/yourrepo.git (fetch)
origin  https://yourname@github.com/yourname/yourrepo.git (push)

alors vous pouvez exécuter la commande que beaucoup d'autres ont suggérée, mais maintenant vous connaissez votre nom et votre nom de domaine ci-dessus, donc vous pouvez simplement couper et coller yourname/yourrepo.git d'en haut dans

git remote set-url origin git@github.com:yourname/yourrepo.git

69
2018-02-13 17:22



Si vous utilisez ssh et que votre clé privée est cryptée avec un mot de passe, alors vous serez toujours invité à entrer la phrase secrète / mot de passe pour la clé privée lorsque vous effectuez des opérations réseau avec Git comme push, pull, et fetch.

Utiliser ssh-agent pour enregistrer les informations d'identification de mot de passe / mot de passe de clé privée

Si vous voulez éviter d'avoir à entrer votre mot de passe à chaque fois, vous pouvez utiliser ssh-agent pour stocker vos informations d'identification de phrase secrète de clé privée une fois par session de terminal, comme je l'explique dans ma réponse à Impossible d'ouvrir une connexion à votre agent d'authentification:

$ eval `ssh-agent -s`
$ ssh-add

Dans un msysgit Bash de Windows, vous devez évaluer la sortie de ssh-agent, mais je ne suis pas sûr si vous devez faire la même chose dans d'autres environnements de développement et systèmes d'exploitation.

ssh-add cherche une clé privée dans votre maison .ssh dossier appelé id_rsa, qui est le nom par défaut, mais vous pouvez passer un chemin de fichier à une clé avec un nom différent.

Tuer l'agent

Lorsque vous avez terminé votre session de terminal, vous pouvez arrêter ssh-agent avec le drapeau kill -k:

$ ssh-agent -k

Comme expliqué dans le ssh-agent Manuel:

-k

Tuer l'agent actuel (donné par la variable d'environnement SSH_AGENT_PID).

Délai d'expiration facultatif

En outre, il peut prendre un paramètre facultatif de timeout comme ceci:

$ ssh-add -t <timeout>

<timeout> est du format <n>h pour <n> heures, <n>m pour <n> minutes, et ainsi de suite.

Selon le ssh-agent Manuel:

-t life

Définir une valeur par défaut pour la durée de vie maximale des identités ajoutées   à l'agent. La durée de vie peut être spécifiée en secondes ou en   format d'heure spécifié dans sshd_config (5). Une durée de vie spécifiée   pour une identité avec ssh-add (1) remplace cette valeur. Sans pour autant   cette option la durée de vie maximale par défaut est éternelle.

Voir cette page pour plus de formats d'heure.

Avertissement de sécurité pour les utilisateurs de Cygwin

Les utilisateurs de Cygwin doivent être conscients de risque de sécurité potentiel avec l'utilisation de ssh-agent dans Cygwin:

les gens devraient être conscients de la   les dangers potentiels de ssh-agent sous cygwin [1], mais sous un local   netstat et remote portscan il ne semble pas que le port spécifié dans   / tmp / ssh-foo est accessible à tous ...?

[1]: http://www.cygwin.com/ml/cygwin/2001-01/msg00063.html

Et à la lien cité:

cependant, notez que les sockets de domaine unix de cygwin sont FONDAMENTALEMENT   PEU SÛR  et donc je suis fortement DÉCOURAGER utilisation de ssh-agent sous   cygwin.

lorsque vous exécutez ssh-agent sous cygwin, il crée une socket AF_UNIX    /tmp/ssh-$USERNAME/  annuaire. sous les prises cygwin AF_UNIX sont   émulé via des sockets AF_INET. vous pouvez facilement voir que si vous regardez   dans /tmp/ssh-$USERNAME/agent-socket-*  fichier via le bloc-notes. tu verras   le quelque chose comme

!<socket >2080

puis courir netstat -a et surprise! vous avez un programme à l'écoute de   port 2080. c'est ssh-agent. quand ssh reçoit un défi RSA de   serveur, il se réfère à correspondant /tmp/ssh-$USERNAME/agent-socket-*   (En vertu de cygwin, dans notre cas, cela signifie qu'il va ouvrir la connexion à    localhost:2080) et demande à ssh-agent de traiter le challenge RSA avec   clé privée qu'il a, puis il transmet simplement la réponse reçue de   ssh-agent au serveur.

sous unix, un tel scénario fonctionne sans problèmes, car un noyau unix   vérifie les autorisations lorsque le programme tente d'accéder au socket AF_UNIX. Pour   Les sockets AF_INET, cependant, les connexions sont anonymes (lire   "peu sûr"). Imaginez, que vous avez cygwin ssh-agent en cours d'exécution.   hacker malveillant peut portscan votre boîte, localiser le port ouvert utilisé par   ssh-agent, ouvrir la connexion à votre serveur ssh, recevoir le challenge RSA   à partir de là, envoyez-le à votre ssh-agent via le port ouvert qu'il a trouvé, recevez RSA   réponse, envoyez-le au serveur ssh et voila, il s'est connecté avec succès   à votre serveur comme vous.


48
2017-08-21 02:54



La source: Configurer Git

La commande suivante enregistre votre mot de passe en mémoire pour un certain temps.
  (Pour git 1.7.10 Ou plus récent.)

$ git config --global credential.helper cache
# Set git to use the credential memory cache

$ git config --global credential.helper 'cache --timeout=3600'
# Set the cache to timeout after 1 hour (setting is in seconds)

41
2017-09-01 02:55



Lorsque vous utilisez https pour git pull & push, juste config remote.origin.url pour votre projet, évitez d'entrer le nom d'utilisateur (ou / et le mot de passe) chaque fois que vous appuyez sur.

Comment configurer remote.origin.url:

Format de l'URL:
    https: // {nom d'utilisateur: mot de passe @} github.com/ {propriétaire} / {repo}

Paramètres dans l'URL:
* Nom d'utilisateur
    facultatif, le nom d'utilisateur à utiliser lors de l'authentification,
    si spécifié, pas besoin d'entrer à nouveau le nom d'utilisateur en cas d'authentification,
    n'utilisez pas d'email, utilisez votre nom d'utilisateur qui n'a pas de "@", sinon l'URL ne peut pas être analysée correctement,
* mot de passe
    facultatif, le mot de passe à utiliser lors de l'authentification,
    si spécifié, pas besoin d'entrer à nouveau le mot de passe quand besoin d'authentification,
    pointe:
        cette valeur est stockée en texte brut, donc pour des raisons de sécurité, ne spécifiez pas ce paramètre,
*

par exemple
    git config remote.origin.url https: //eric@github.com/eric/myproject


@Update - en utilisant ssh

Je pense en utilisant ssh le protocole est une meilleure solution que https, même si l'étape de configuration est un peu plus complexe.

Étapes brutes:

  • Créer des clés SSH en utilisant la commande, par exemple ssh-keygen sur Linux, sur les fenêtres msysgit fournir des commandes similaires.
  • Gardez la clé privée sur la machine locale au bon endroit, p. ~/.ssh. Et ajoutez-le à l'agent SSH via ssh-add commander.
  • Téléchargez la clé publique sur le serveur git.
  • Changement remote.origin.url de dépôt git à ssh style, par exemple git@gitlab.com:myaccount/myrepo.git
  • Ensuite, lorsque vous tirez ou poussez, pas besoin d'entrer votre nom d'utilisateur ou votre mot de passe.

Conseils:

  • Si votre clé SSH a une phrase secrète, vous devez l'entrer lors de la première utilisation de la clé après chaque redémarrage de votre machine, par défaut.

@Update - Basculer entre https et ssh protocole.

Changez simplement remote.origin.url suffira, ou vous pouvez modifier repo_home/.git/config directement pour changer la valeur (par exemple en utilisant vi sur Linux).

Habituellement, j'ajoute une ligne pour chaque protocole, et commente l'un d'eux en utilisant #.

par exemple

[origine "à distance"]
        url = git@gitlab.com: myaccount / myrepo.git
        # url = https: //myaccount@gitlab.com/myaccount/myrepo.git
        fetch = + refs / heads / *: refs / télécommandes / origine / *

28
2017-12-25 15:42