Pourquoi Github demande-t-il un nom d'utilisateur / mot de passe en suivant les instructions à l'écran et en poussant un nouveau dépôt?

298

Je suis le propriétaire d'une organisation sur github et je viens de créer un dépôt et j'ai essayé de pousser, mais je rencontre un problème où il me demande mon nom d'utilisateur même si je peux SSH très bien:

$ ssh -T [email protected]
Hi Celc! You've successfully authenticated, but GitHub does not provide shell access.
$ git add .
$ git commit -m 'first commit'
[master (root-commit) 3f1b963] first commit
 6 files changed, 59 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 main.js
 create mode 100644 package.json
 create mode 100644 readme.markdown
 create mode 100644 views/index.ejs
 create mode 100644 views/layout.ejs
$ git remote add origin https://github.com/WEMP/project-slideshow.git
$ git push -u origin master
Username for 'https://github.com':

Qu'est-ce que je fais mal? Cela ne m'est jamais arrivé auparavant, mais j'ai récemment mis à niveau vers git 1.7.10.3.

Kit Sunde
la source

Réponses:

662

N'utilisez pas HTTP, utilisez SSH à la place

changement

https://github.com/WEMP/project-slideshow.git 

à

[email protected]:WEMP/project-slideshow.git

vous pouvez le faire en .git/configfichier

Hugo
la source
1
Merci! Je viens de comprendre cela après avoir lu stackoverflow.com/a/10126412/29347 , je ne pense pas que github me donne normalement une télécommande de dépôt en HTTPS, ce qui a causé une certaine confusion.
Kit Sunde
2
Vous pouvez modifier cette option en cliquant sur le bouton où vous copiez votre URL de clone.
Derek Adair
Pour MacOS. Problème lors de la mise à niveau vers les dernières macos. stackoverflow.com/a/39616339/1445102
1Rhino
12
Vous pouvez également le faire git remote set-url origin [email protected]:user/repo.git, comme détaillé dans stackoverflow.com/questions/10126381/…
Et enfin le
54

J'ai eu ce même problème et je me suis demandé pourquoi cela ne s'était pas produit avec un dépôt Bitbucket cloné avec https. En y regardant un peu, j'ai trouvé que la configuration du repo BB avait une URL qui comprenait mon nom d'utilisateur. J'ai donc édité manuellement la configuration de mon dépôt GH comme ça et le tour est joué, plus aucune invite de nom d'utilisateur. Je suis sous Windows.

Modifier your_repo_dir/.git/config(rappelez-vous: le .gitdossier est masqué)

Changement:

https://github.com/WEMP/project-slideshow.git

à:

https://*username*@github.com/WEMP/project-slideshow.git

Enregistrez le fichier. Faites un git pulltest.

La bonne façon de le faire est probablement d'utiliser les commandes git bash pour modifier le paramètre, mais l'édition directe du fichier ne semble pas être un problème.

Sean
la source
C'est un bon point, si vous incluez le nom d'utilisateur, il sera géré par le trousseau du système d'exploitation (au moins, il devrait l'être dans OSX, et apparemment dans Windows aussi). Il n'y a pas de différence entre éditer le fichier avec le bloc-notes ou avec vim / emacs / nano / vi, je ne m'inquiéterais pas tellement du snobisme technique, c'est juste un fichier texte en tout cas.
Kit Sunde
20

Voici une réponse officielle à cela:

Si Git vous demande un nom d'utilisateur et un mot de passe chaque fois que vous essayez d'interagir avec GitHub, vous utilisez probablement l'URL du clone HTTPS pour votre référentiel.

L'utilisation d' une URL distante HTTPS présente certains avantages: elle est plus facile à configurer que SSH et fonctionne généralement via des pare-feu et des proxy stricts. Cependant, il vous invite également à entrer vos informations d'identification GitHub chaque fois que vous tirez ou poussez un référentiel.

Vous pouvez configurer Git pour stocker votre mot de passe pour vous. Si vous souhaitez configurer cela, lisez tout sur la configuration de la mise en cache des mots de passe .

Catalin Hritcu
la source
1
Merci. Je dirais avec Github qu'il n'est pas plus facile à configurer si vous vous retrouvez ici (:
ecoologic
Ceci est une réponse à une question parce que la question demande, POURQUOI ?
eli
14

Améliorant la réponse de @ Ianl ,

Il semble que si l'authentification en 2 étapes est activée, vous devez utiliser un jeton au lieu d'un mot de passe. Vous pouvez générer un jeton ici .

Si vous souhaitez désactiver les invites pour le nom d'utilisateur et le mot de passe, vous pouvez définir l'URL comme suit -

git remote set-url origin https://username:[email protected]/WEMP/project-slideshow.git

Notez que l'URL contient à la fois le nom d'utilisateur et le mot de passe. Le .git/configfichier doit également montrer vos paramètres actuels.


Mise à jour 20200128:

Si vous ne souhaitez pas stocker le mot de passe dans le fichier de configuration, vous pouvez générer votre jeton personnel et remplacer le mot de passe par le jeton. Voici quelques détails .

Cela ressemblerait à ceci -

git remote set-url origin https://username:[email protected]/WEMP/project-slideshow.git
kaushal
la source
Est-ce sécurisé? Quelqu'un peut-il simplement accéder à ces informations depuis mon ordinateur?
Akaisteph7
Oui, ils peuvent y accéder depuis votre ordinateur car ils sont stockés en texte brut dans un .git/configfichier
kaushal
11

une note supplémentaire:

si vous avez déjà ajouté une télécommande ($ git remote add origin ...) et que vous devez changer cette télécommande particulière, faites d'abord une suppression à distance ($ git remote rm origin), avant de rajouter la nouvelle URL de dépôt améliorée (où "origine" était le nom du dépôt à distance).

donc pour utiliser l'exemple d'origine:

$ git remote add origin https://github.com/WEMP/project-slideshow.git
$ git remote rm origin
$ git remote add origin https://[email protected]/WEMP/project-slideshow.git
IanI
la source
4
Vous n'avez pas besoin de retirer la télécommande. Vous pouvez simplement changer l'URL:git remote set-url origin https://[email protected]/WEMP/project-slideshow.git
shovavnik
8

Si vous utilisez HTTPS, vérifiez que votre URL est correcte. Par exemple:

$ git clone https://github.com/wellle/targets.git
Cloning into 'targets'...
Username for 'https://github.com': ^C

$ git clone https://github.com/wellle/targets.vim.git
Cloning into 'targets.vim'...
remote: Counting objects: 2182, done.
remote: Total 2182 (delta 0), reused 0 (delta 0), pack-reused 2182
Receiving objects: 100% (2182/2182), 595.77 KiB | 0 bytes/s, done.
Resolving deltas: 100% (1044/1044), done.
un nerd payé
la source
1
Voilà un excellent point! Si vous avez une faute de frappe dans l'URL, vous serez invité à entrer le «nom d'utilisateur» au lieu d'être informé que le référentiel n'existe pas.
dmitrii
5

Je viens de recevoir un e-mail d'un administrateur de github.com indiquant ce qui suit: "Nous conseillons normalement aux gens d'utiliser l'URL HTTPS, sauf s'ils ont une raison spécifique d'utiliser le protocole SSH. Le HTTPS est sécurisé et plus facile à configurer, donc nous le définissons par défaut lorsqu'un nouveau référentiel est créé. "

L'invite de mot de passe accepte en effet les informations de connexion normales de github.com. Un didacticiel sur la configuration de la mise en cache des mots de passe est disponible sur https://help.github.com/articles/set-up-git#password-caching . J'ai suivi les étapes du didacticiel et cela a fonctionné pour moi.

jochen
la source
4

Parce que vous utilisez la méthode HTTPS . HTTPS nécessite que vous tapiez l'accès à votre compte chaque fois que vous essayez de pousser ou de tirer , mais il y a aussi un moyen, appelé SSH , et il vous permet de dire à git, que je vous donne la permission avec mon compte pour ce PC, et ne demandez jamais moi à nouveau sur tout accès utilisateur . Pour l'utiliser, vous devez générer une clé SSH et l' ajouter dans le compte de votre Github une seule fois . Pour ce faire, vous pouvez suivre ces étapes

Comment générer une clé SSH pour Github

Hazarapet Tunanyan
la source