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


1437

J'ai cloné un référentiel Git de mon compte GitHub vers mon PC.

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

Lorsque j'essaie de pousser ou de tirer de GitHub à l'aide de mon PC, cela nécessite un nom d'utilisateur et un mot de passe, mais pas lorsque j'utilise l'ordinateur portable!

Je ne veux pas taper mon nom d'utilisateur et mon mot de passe chaque fois que j'interagis avec  origin. Qu'est-ce que j'oublie ici?


1
Oui mais que dois-je faire? J'ai généré le keygen quoi d'autre?
TooCooL

1
Vous devez enregistrer la clé de pub avec votre compte Github ( github.com/account/ssh ) et configurer votre client SSH pour utiliser le bon nom d'utilisateur.
jwodder

1
J'ai fait tout cela, mais cela nécessite toujours un nom d'utilisateur et un mot de passe! est-il possible d'utiliser un compte avec deux PC?
TooCooL

1
Cette question couvre très bien toutes vos options: stackoverflow.com/questions/5343068/…
ford

2
Plus besoin de passer à ssh. C'est également possible avec HTTPS. Vérifiez ma réponse.
Varun Achar

Réponses:


1961

Une cause courante est le clonage utilisant la valeur par défaut (HTTPS) au lieu de SSH. Vous pouvez corriger cela en allant dans votre référentiel, 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é sur GitHub: Passer des URL distantes de HTTPS à SSH .


61
Et pour savoir comment changer l'URL, cliquez ici: stackoverflow.com/a/2432799/60488 (spoiler: git remote set-url origin git://new.url.here)
Johan Kool

136
Si vous ne pouvez pas utiliser ssh pour des restrictions de sécurité (comme moi) vous pouvez le faire: git remote set-url origin https://name:password@github.com/repo.git (extrait d'un commentaire ici)
Bruno Berisso

134
Pourquoi le clonage avec HTTPS est-il une erreur courante? GitHub recommande désormais d'utiliser HTTPS.
Dennis

8
@smftre par défaut c'est le cas, mais vous pouvez utiliser un assistant pour mettre en cache vos informations d'identification .
Dennis

28
Correction de mon Permission denied (publickey)utilisation de ce guide: help.github.com/articles/generating-ssh-keys .
voltrevo

386

Authentification permanente avec les référentiels Git

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

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

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

Vous devez également spécifier l' expiration de la mise en cache ,

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 pendant 7200 secondes (2 heures) .


vous devrez peut-être également modifier votre URL à distance avec git remote set-url origin https://git@github.com/<owner>/<repo>.git Cela fonctionne également avec 2FA
Bron Davies

14
Ce devrait être la réponse acceptée. Cela répond exactement à la question.
Abraham TS

sera-t-il supprimé automatiquement des fichiers ubuntu après 7200 pour des raisons de sécurité?
usama

ou 43 200 pendant 12 heures. Vous vous connectez une fois par jour. Cela pourrait être plus raisonnable pour certains.
Urasquirrel

Je viens d'essayer ceci - j'ai:fatal: protocol 'https' is not supported
Joel

134

Je viens de rencontrer 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 HTTPS:

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

Et pas ça:

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

Vous pouvez maintenant valider avec juste la clé SSH au lieu de usernameet password.


1
Pour résoudre le problème le plus facilement, il suffit de modifier l'URL d'origine distante. C'est tout. Terminé. Merci!
JOM

1
Cela a fonctionné pour moi, mais je devais d'abord résoudre ce problème: stackoverflow.com/questions/2643502/…
Sridhar Sarnobat

pour configurer la clé SSH, vous pouvez vous référer à help.github.com/articles/connecting-to-github-with-ssh
ksridhar

120

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

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

Ajout (voir le deuxième commentaire de VonC): sous Windows, le nom du fichier est %HOME%\_netrc.

Lisez également 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 .

Cachez votre mot de passe GitHub dans Git en utilisant un assistant d'identification :

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

Cela fonctionne également sur Linux, Mac et Windows.


3
Oui, cela fonctionne sous Linux, mais ne fonctionne pas pour gitbash sous Windows.
Dielson Sales

3
@dolmen Je vois ce que vous voulez dire, mais si cela vous dérange de mettre votre mot de passe dans un texte clair, vous pouvez ... le chiffrer;) Voir stackoverflow.com/a/18362082/6309 . et qui est même compatible avec l'authentification à 2 facteurs (2FA) de Github: stackoverflow.com/a/18607931/6309
VonC

3
@Sales, il fonctionne parfaitement à partir d'une session DOS ou d'un git bash sous Windows, à condition d'appeler votre fichier %HOME%\_netrc(au lieu de ~/.netrc). Voir également stackoverflow.com/a/18362082/6309 pour crypter ce fichier.
VonC

1
Cela fonctionne très bien sous Linux, en particulier en utilisant git sur VPN.
Evan Hu

3
vous n'avez pas besoin de le mettre en texte clair ou de le crypter. l'utilitaire d'assistance le mettra en cache pour vous et prend 30 secondes pour être configuré. help.github.com/articles/caching-your-github-password-in-git/…
user137717

86

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

git remote -v

Qui répondra avec quelque chose comme

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

Ensuite, vous pouvez exécuter la commande que beaucoup d'autres ont suggérée, mais maintenant vous connaissez votre nom et votre référence d'en haut, vous pouvez donc simplement couper et coller yourname/yourrepo.gitde ce qui précède dans:

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

1
J'ai essayé ça. Il me demande à paraphrasechaque fois. Je n'en ai pas installé
samayo

Qu'est-ce qui se substitue à yourrepo?
Raphi

2
@Raphi courir git remote -vet voir ce qui sort
Davide

1
D'autres réponses devraient précéder ce conseil.
Bennett Brown

57

Si vous utilisez SSH et votre clé privée est cryptée avec un mot de passe, alors vous serez toujours invité à entrer le mot de passe / mot de passe pour la clé privée lorsque vous effectuez des opérations de réseau avec Git comme push, pullet fetch.

Utilisez 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 à saisir votre mot de passe à chaque fois, vous pouvez utiliser ssh-agentpour stocker vos informations d'identification de mot de passe de clé privée une fois par session de terminal, comme je l'explique dans ma réponse à Impossible d'ouvrir une connexion avec votre agent d'authentification :

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

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

ssh-addrecherche une clé privée dans votre .sshdossier de départ appelée 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-agentavec le drapeau d' arrêt -k:

$ ssh-agent -k

Comme expliqué dans le ssh-agentmanuel :

-k

Tuez 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 de délai d'expiration facultatif comme ceci:

$ ssh-add -t <timeout>

<timeout>est le format <n>hdes <n>heures, <n>mpour <n>minutes, et ainsi de suite.

Selon le ssh-agentmanuel :

-t life

Définissez 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 dans un 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 cette option, la durée de vie maximale par défaut est indéfiniment.

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 d'un risque potentiel de sécurité lié à l'utilisation de ssh-agent dans Cygwin :

les gens devraient être conscients des dangers potentiels de ssh-agent sous Cygwin 1 , bien que sous un netstat local et un scan de port distant, il ne semble pas que le port spécifié dans / tmp / ssh-foo soit accessible à tous ...?

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

Et au lien cité :

cependant, notez que les sockets de domaine Unix de Cygwin sont FONDAMENTALEMENT INSÉCURES et donc je DÉCOURAGE fortement l' utilisation de ssh-agent sous Cygwin.

lorsque vous exécutez ssh-agent sous Cygwin, il crée un socket AF_UNIX dans le /tmp/ssh-$USERNAME/répertoire. Sous Cygwin, les sockets AF_UNIX sont émulés via les sockets AF_INET. Vous pouvez facilement voir cela si vous regardez un /tmp/ssh-$USERNAME/agent-socket-*fichier via le Bloc-notes. Vous verrez quelque chose comme

!<socket >2080

alors cours netstat -aet surprends! Vous avez un programme qui écoute le port 2080. C'est ssh-agent. Lorsque ssh reçoit un défi RSA du serveur, il fait référence au correspondant /tmp/ssh-$USERNAME/agent-socket-*(sous Cygwin, dans notre cas, cela signifie qu'il ouvrira la connexion localhost:2080) et demande à ssh-agent de traiter le défi RSA avec la clé privée qu'il possède, puis il transmet simplement la réponse reçue de l'agent ssh au serveur.

Sous Unix, un tel scénario fonctionne sans problème, car le noyau Unix vérifie les autorisations lorsque le programme essaie d'accéder à un socket AF_UNIX. Pour les sockets AF_INET, cependant, les connexions sont anonymes (lire "non sécurisé"). Imaginez que vous ayez l'agent ssh Cygwin en cours d'exécution. Un pirate malveillant peut analyser votre box, localiser le port ouvert utilisé par ssh-agent, ouvrir une connexion à votre serveur SSH, en recevoir le défi RSA, l'envoyer à votre ssh-agent via un port ouvert qu'il a trouvé, recevoir le Réponse RSA, envoyez-la au serveur SSH et le tour est joué, il / elle s'est connecté avec succès à votre serveur comme vous.


Cela semble agréable et détaillé. J'ai pris soin de l' aide aux informations d'identification https , et vous avez pris soin des connexions ssh! +1
VonC

49

Source: Configurer Git

La commande suivante enregistrera votre mot de passe en mémoire pendant 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 one hour (setting is in seconds)

2
Je préfère l'aide des informations d'identification «netrc» ( stackoverflow.com/a/18362082/6309 ) pour mettre en cache plusieurs informations d'identification (sans avoir à mémoriser tous les mots de passe). Mais si vous êtes sous Windows et souhaitez utiliser le cache mémoire, vous avez besoin de winstore ( stackoverflow.com/a/15310274/6309 )
VonC

9
C'est la meilleure réponse à ce jour à mon humble avis.
Chiel ten Brinke

35

Lorsque vous utilisez https pour Git pull & push, configurez simplement remote.origin.urlvotre projet pour éviter de saisir un nom d'utilisateur (ou / et un mot de passe) chaque fois que vous appuyez.

Comment configurer remote.origin.url:

Format 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 en cas de besoin.
authentification, si spécifié, pas besoin de saisir à nouveau le nom d'utilisateur lorsque vous avez besoin d'une authentification. N'utilisez pas de courrier électronique; utilisez votre nom d'utilisateur sans "@", sinon l'URL ne peut pas être analysée correctement, * mot de passe facultatif, le mot de passe à utiliser lorsque vous avez besoin d'une authentification. S'il est spécifié, il n'est pas nécessaire de saisir à nouveau le mot de passe lorsque vous avez besoin d'une 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 - utilisation ssh

Je pense que l'utilisation du sshprotocole est une meilleure solution que https, même si l'étape de configuration est un peu plus complexe.

Étapes approximatives:

  • Créer des clés ssh à l'aide d'une commande, par exemple ssh-keygensous Linux, sur Windows, msysgitfournir des commandes similaires.
  • Conservez la clé privée sur l'ordinateur local à un emplacement approprié, par exemple ~/.ssh. Et ajoutez-le à l'agent ssh via la ssh-addcommande.
  • Téléchargez la clé publique sur le serveur Git.
  • Changement remote.origin.urldu référentiel Git en sshstyle, par exemple,git@gitlab.com:myaccount/myrepo.git
  • Ensuite, lorsque vous tirez ou poussez, il n'est jamais nécessaire d'entrer le nom d'utilisateur ou le mot de passe.

Conseils:

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

@Update - Bascule entre httpset sshprotocole.

Un simple changement remote.origin.urlsuffira, ou vous pouvez éditer repo_home/.git/configdirectement pour changer la valeur (par exemple en utilisant visous Linux).

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

Par exemple

[origine "distante]
        url = git@gitlab.com: myaccount / myrepo.git
        # url = https: //myaccount@gitlab.com/myaccount/myrepo.git
        chercher = + refs / têtes / *: refs / télécommandes / origine / *

Êtes-vous sûr que l' extension basée sur http prend en charge l'URL de nom d'utilisateur? Le manuel git-fetch(1)mentionne cela uniquement pour les URL basées sur git/ ssh.
jour

@plmday oui, je l'utilise, ma version git est 1.8.2.3 et 1.8.4, je ne suis pas sûr que la version supérieure change à ce sujet.
Eric Wang

1
NB: fournir votre mot de passe dans l'URL (même lorsque vous utilisez HTTPS) signifie qu'il est visible par tout ce qui se trouve entre vous et votre référentiel.
William

3
Non, fournir le mot de passe en https://username:password@github.com/toute sécurité. Voir stackoverflow.com/questions/4980912/…
slowhand

1
Et c'est ce que je cherchais (pour une automatisation complète)
Joshua

16

Vous pouvez mettre en cache votre mot de passe GitHub dans Git:

Suivez simplement les instructions de la documentation officielle de GitHub .

Après avoir suivi les instructions du lien ci-dessus, vous devriez pouvoir pousser / tirer vers / depuis votre référentiel sans taper à chaque fois votre nom d'utilisateur / mot de passe.


5
c'est la meilleure réponse ici et devrait être celle acceptée IMO
TheZuck

1
D'accord, une réponse citant la documentation officielle devrait prévaloir. J'ai suivi avec plaisir leurs instructions et préfère utiliser les conventions standard.
johnnieb

10

Voici une autre option:

Au lieu d'écrire

git push origin HEAD

Vous pourriez écrire:

git push https://user:pass@yourrepo.com/path HEAD

Évidemment, avec la plupart des shells, cela entraînera la mise en cache du mot de passe dans l'historique, alors gardez cela à l'esprit.


1
Dans Bash, l'ajout d'un ou plusieurs espaces de tête le gardera généralement hors de l'historique. Mais pas dans Git Bash , cependant.
Peter Mortensen

Cela a simplement fonctionné pour moi :)
Naveen Kumar V

9

Ce qui a fonctionné pour moi, c'est d'éditer .git/configet d'utiliser

[remote "origin"]
        url = https://<login>:<password>@gitlab.com(...).git

Il va sans dire que c'est un moyen non sécurisé de stocker votre mot de passe, mais il existe des environnements / cas où cela peut ne pas être un problème.


6

Si la clé ou le .netrcfichier SSH ne fonctionnait pas pour vous, alors une autre solution simple, mais moins sécurisée, qui pourrait fonctionner pour vous est git-credential-store - Aide pour stocker les informations d'identification sur le disque:

git config --global credential.helper store

Par défaut, les informations d'identification seront enregistrées dans un fichier ~/.git-credentials. Il sera créé et écrit dans.

Veuillez noter que l'utilisation de cette aide stockera vos mots de passe non chiffrés sur le disque, protégés uniquement par les autorisations du système de fichiers. Si cela peut ne pas être un compromis de sécurité acceptable.


5

J'ai eu le même problème.

J'ai donc changé le .git/configfichier de mon projet,

url = https://github.com/<your-user-here>/<your-repo-here>

à

url = git@github.com:<your-user-here>/<your-repo-here>

et ajouté la clé publique SSH au profil Git qui est en cours de configuration.

Pour la clé publique SSH:

cat ~/.ssh/id_rsa.pub

1
avec cat ~/.ssh/id_rsa.pubobtenir la clé rsa et coller dans le paramètre de portail Web git.
Anupam Maurya

4

Mise à jour pour HTTPS:

GitHub a lancé un nouveau programme pour Windows qui stocke vos informations d'identification lorsque vous utilisez HTTPS:

Utiliser:

  • Téléchargez le programme ici

  • Une fois que vous exécutez le programme, il modifiera votre .gitconfigfichier. Vérifiez à nouveau s'il a édité le bon .gitconfigau cas où vous en auriez plusieurs. S'il n'a pas modifié le bon, ajoutez ce qui suit à votre.gitconfig

    [credential]
        helper = !'C:\\Path\\To\\Your\\Downloaded\\File\\git-credential-winstore.exe'
    

    REMARQUE le saut de ligne après [credential]. C'est requis.

  • Ouvrez votre client de ligne de commande et essayez git push origin masterune fois. S'il vous demande un mot de passe, entrez-le et vous avez terminé. Mot de passe enregistré!


Merci Varun, charme travaillé!
Joyy

4

Pour les utilisateurs de Windows Git, après l'exécution git config --global credential.helper store, s'il demande toujours un mot de passe, vous feriez mieux de vérifier où le fichier de configuration est écrit, en utilisant cette commande

git config --list --show-origin

Dans mon cas, après avoir modifié manuellement le fichier de configuration «C: \ Program Files \ Git \ mingw64 \ etc \ gitconfig» et ajouté le texte suivant, cela a fonctionné.

[credential]
    helper = store

3

Vous avez essentiellement deux options.

Si vous utilisez le même utilisateur sur les deux machines, vous devez copier la clé .pub sur votre PC, donc GitHub sait que vous êtes le même utilisateur.

Si vous avez créé un nouveau fichier .pub pour votre PC et que vous souhaitez traiter les machines comme des utilisateurs différents, vous devez enregistrer le nouveau fichier .pub sur le site Web de GitHub.

Si cela ne fonctionne toujours pas, cela peut être dû au fait que ssh n'est pas configuré correctement et que ssh ne parvient pas à trouver l'emplacement de vos clés. Essayer

ssh -vv username@github.com

Pour obtenir plus d'informations sur les raisons de l'échec de SSH.


3

Mise à jour directe de votre fichier de configuration Git ( si vous ne souhaitez pas mémoriser de fantastiques commandes ):

Ouvrez votre .git/configfichier dans votre éditeur de texte préféré. Ce sera dans le dossier que vous avez cloné ou dans le référentiel dans lequel vous avez joué git init. Allez dans ce référentiel. .gitest un dossier caché, et en appuyant sur Ctrl+ Hdevrait afficher le dossier caché, ( ls -adans le terminal).

Voici un exemple du .git/configfichier. Copiez et collez ces lignes et assurez-vous de mettre à jour ces lignes avec vos informations Git.

[user]
        name = Tux
        email = tux@gmail.com
        username = happy_feet

[remote "origin"]
        url = https://github.com/happy_feet/my_code.git
        fetch = +refs/heads/*:refs/remotes/origin/*

Modifiez la partie URL avec le format suivant pour SSH:

url = git@github.com:happy_feet/my_code.git

( Les formats ci-dessus ne changent pas avec divers serveurs distants Git comme GitHub ou Bitbucket. C'est la même chose si vous utilisez Git pour le contrôle de version ):

Remarque: La façon SSH de se connecter à un référentiel Git distant vous obligera à ajouter votre clé SSH publique à votre serveur distant Git ( comme GitHub ou Bitbucket. Recherchez la page des paramètres pour les clés SSH ).

Pour savoir comment générer vos clés SSH, reportez-vous à: Création de clés SSH


2

C'est ce qui a fonctionné pour moi:

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

Exemple:

git remote set-url origin https://jsmith@github.com/jsmith/master.git

Merci j'ai voté pour votre réponse
Mandeep Singh

2

Vous devez effectuer deux étapes -

  1. git remote remove origin
  2. git remote add origin git@github.com:NuggetAI/nugget.git

Notez que l'URL Git est une URL SSH et non une URL HTTPS ... que vous pouvez sélectionner ici:

Entrez la description de l'image ici


2

Si vous avez cloné HTTPS au lieu de SSH et que vous rencontrez un problème avec l'invite de nom d'utilisateur et de mot de passe lors de l'extraction, de la poussée et de la récupération. Vous pouvez résoudre ce problème simplement pour UBUNTU

Étape 1: déplacer vers le répertoire racine

cd ~/

créer un fichier .git-credentials

Ajoutez ce contenu à ce fichier avec vous usename passwordetgithosting URL

https://user:pass@example.com

Exécutez ensuite la commande

git config --global credential.helper store

Maintenant, vous pourrez tirer et récupérer tous les détails de votre repo sans tracas.


0

Si vous utilisez Git (par exemple, Git Bash) sous Windows (et si vous ne souhaitez pas passer de HTTPS à SSH), vous pouvez également utiliser Git Credential Manager pour Windows

Cette application gardera pour vous le nom d'utilisateur et le mot de passe ...


0

Comme de nombreux utilisateurs l'ont dit, il vous suffit de changer l'URL de votre référentiel Git de HTTPS en SSH.

Si vous n'avez pas généré de clé SSH sur votre machine, vous devrez le faire.

Juste comme information supplémentaire, après avoir fait ce changement, j'obtenais toujours la même erreur:

Permission refusée.

Dans mon cas, le problème était que j'utilisais le shell Windows pour exécuter la commande ngh; puisque cette commande devrait ouvrir une invite pour demander la phrase SSH et que Windows Shell n'ouvre pas ce type d'invites, l'authentification a simplement échoué.

Donc, je devais juste ouvrir le shell Git et y exécuter la commande ngh, mettre la phrase SSH à l'invite à chaque fois qu'elle le demandait et "voilà" ... Ça fonctionnait bien!


0
    # create the company identity file
    ssh-keygen -t rsa -b 4096 -C "first.last@corp.com"
    # save private key to ~/.ssh/id_rsa.corp, 
    cat ~/.ssh/id_rsa.corp.pub # copy paste this string into your corp web ui security ssh keys

    # create your private identify file
    ssh-keygen -t rsa -b 4096 -C "me@gmail.com"
    # save private key to ~/.ssh/id_rsa.me, note the public key ~/.ssh/id_rsa.me.pub
    cat ~/.ssh/id_rsa.me.pub # copy paste this one into your githubs, private keys

    # clone company internal repo as follows
    GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa.corp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" \
    git clone git@git.in.corp.com:corp/project.git

    export git_msg="my commit msg with my corporate identity"
    git add --all ; git commit -m "$git_msg" --author "MeFirst MeLast <first.last@corp.com>"
    GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa.corp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" \
    git push 

    # clone public repo as follows
    GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa.corp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" \
    git clone git@github.com:acoolprojectowner/coolproject.git

    export git_msg="my commit msg with my personal identity"
    git add --all ; git commit -m "$git_msg" --author "MeFirst MeLast <first.last@gmail.com>"
    GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa.me -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" \
    git push 

    # stop :: how-to use different ssh identity files

0

Si vous avez activé 2FA sur votre compte Github, votre mot de passe normal ne fonctionnera pas à cette fin, mais vous pouvez générer un jeton d'accès personnel et l'utiliser à sa place.

Visitez la page Settings-> Developer Settings-> Personal Access Tokensdans GitHub ( https://github.com/settings/tokens/new ), et générez un nouveau Token avec toutes les autorisations Repo :

générer un jeton d'accès personnel GitHub

La page affichera alors la nouvelle valeur de jeton. Enregistrez cette valeur et utilisez-la à la place de votre mot de passe lorsque vous accédez à votre référentiel sur GitHub:

> git push origin develop
Username for 'https://github.com': <your username>
Password for 'https://<your username>@github.com': <your personal access token>
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.