Comment puis-je éviter la spécification du nom d’utilisateur et du mot de passe à chaque poussée?

Je mets mon travail dans un repository Git distant.

Chaque push me demandera d’entrer le username d’ username et le password . Je voudrais l’éviter pour chaque poussée, mais comment configurer pour l’éviter?

1. Générez une clé SSH

Linux / Mac

Ouvrez le terminal pour créer des clés ssh:

 cd ~ #Your home directory ssh-keygen -t rsa #Press enter for all values 

Pour les fenêtres

(Fonctionne uniquement si le programme de validation est capable d’utiliser des certificates / clés privées et publiques)

  1. Utilisez Putty Gen pour générer une clé
  2. Exporter la clé en tant que clé SSH ouverte

Voici une visite guidée sur le mastic pour les étapes ci-dessus

2. Associez la clé SSH au référentiel distant

Cette étape varie en fonction de la configuration de votre télécommande.

  • S’il s’agit d’un repository GitHub et que vous disposez de privilèges d’administrateur, accédez aux parameters et cliquez sur “Ajouter une clé SSH”. Copiez le contenu de votre ~/.ssh/id_rsa.pub dans le champ intitulé “Clé”.

  • Si votre référentiel est administré par quelqu’un d’autre, donnez à l’administrateur votre id_rsa.pub .

  • Si votre référentiel distant est administré par votre, vous pouvez utiliser cette commande par exemple:

    scp ~/.ssh/id_rsa.pub YOUR_USER@YOUR_IP:~/.ssh/authorized_keys/id_rsa.pub

3. Définissez votre URL distante sur un formulaire qui prend en charge SSH 1

Si vous avez effectué les étapes ci-dessus et que vous recevez toujours l’invite de mot de passe, assurez-vous que l’URL de votre référentiel est bien dans le formulaire

 git+ssh://git@github.com/username/reponame.git 

par opposition à

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

Pour voir l’URL de votre repository, exécutez:

 git remote show origin 

Vous pouvez changer l’URL avec:

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

[1] Cette section intègre la réponse d’ Eric P

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/repo.git Username for 'https://github.com':  Password for 'https://USERNAME@github.com':  

Utiliser devrait également spécifier expirer la mise en cache ,

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

Après avoir activé la mise en cache des informations d’identification, celle-ci sera mise en cache pendant 7200 secondes (2 heures) .

Remarque: Assistant d’informations d’identification stockant le mot de passe non chiffré sur le disque local.

Si vos clés SSH sont déjà configurées et que vous recevez toujours l’invite de mot de passe, assurez-vous que l’URL de votre repository est dans le formulaire

 git+ssh://git@github.com/username/reponame.git 

par opposition à

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

Pour voir l’URL de votre repository, exécutez:

 git remote show origin 

Vous pouvez changer l’URL avec git remote set-url comme suit:

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

Utilisez --repo option --repo pour la commande git push. Comme ça:

 $ git push --repo https://name:password@bitbucket.org/name/repo.git 

Sauver indéfiniment

Vous pouvez utiliser le git-credential-store via

 git config credential.helper store 

qui stocke votre mot de passe non crypté dans le système de fichiers :

L’utilisation de cette aide stockera vos mots de passe non chiffrés sur disque, protégés uniquement par les permissions du système de fichiers. S’il ne s’agit pas d’un compromis de sécurité acceptable, essayez git-credential-cache ou trouvez un assistant qui s’intègre au stockage sécurisé fourni par votre système d’exploitation.

Avec un timeout

Utilisez le git-credential-cache qui stocke le mot de passe par défaut pendant 15 minutes.

 git config credential.helper cache 

pour définir un délai d’expiration différent, utilisez --timeout (ici 5 minutes)

 git config credential.helper 'cache --timeout=300' 

Enregistrement sécurisé indéfiniment (OS X et Windows)

  • Si vous utilisez un Mac, Git est livré avec un mode «osxkeychain» , qui met en cache les informations d’identification dans le trousseau sécurisé associé à votre compte système. Cette méthode stocke les informations d’identification sur le disque et n’expire jamais, mais elles sont chiffrées avec le même système qui stocke les certificates HTTPS et les remplissages automatiques Safari.
  • Si vous utilisez Windows, vous pouvez installer un assistant appelé «Git Credential Manager for Windows». Il est similaire à l’assistant «osxkeychain» décrit ci-dessus, mais utilise Windows Credential Store pour contrôler les informations sensibles. Vous pouvez le trouver sur https://github.com/Microsoft/Git-Credential-Manager-for-Windows . [souligne le mien]

J’utilisais le lien https ( https://github.com/org/repo.git ) au lieu du lien ssh;

 git@github.com:org/repo.git 

La commutation a résolu le problème pour moi!

Connectez votre client git à votre magasin d’informations d’identification du système d’exploitation. Par exemple, dans Windows, vous associez l’assistant d’informations d’identification à wincred:

 git config --global credential.helper wincred 

Existe-t-il un moyen d’ignorer la saisie du mot de passe lors de l’utilisation de https: // sur GitHub?

J’ai utilisé la réponse proposée par Pavel et cela a fonctionné pour moi. Ma différence était de le faire pendant que j’ajoutais la télécommande comme ceci: git remote add (alias) https://(name:password)@github.com/(the remote address).git

Ma solution sous Windows:

  1. Faites un clic droit sur le répertoire pour pousser et sélectionnez “Git Bash Here”.
  2. ssh-keygen -t rsa (Appuyez sur Entrée pour toutes les valeurs)
  3. Vérifiez le terminal pour: Your public key has been saved in /c/Users//.ssh/id_rsa.pub
  4. Copier la clé publique du fichier spécifié.
  5. Accédez à votre profil GitHub => Paramètres => Clés SSH et GPG => Nouvelle clé SSH => Collez votre clé SSH là-bas => Enregistrer

Sur le système d’exploitation Windows, utilisez ceci à la place, cela fonctionne pour moi:

 https://{Username}:{Password}@github.com/{Username}/{repo}.git 

par exemple

 git clone https://{Username}:{Password}@github.com/{Username}/{repo}.git git pull https://{Username}:{Password}@github.com/{Username}/{repo}.git git remote add origin https://{Username}:{Password}@github.com/{Username}/{repo}.git git push origin master 

Je voulais juste signaler quelque chose à propos de la solution mentionnée ci-dessus à plusieurs resockets:

 git config credential.helper store 

Vous pouvez utiliser n’importe quelle commande nécessitant un mot de passe après cela. Vous n’avez pas à pousser. (vous pouvez également extraire par exemple) Après cela, vous n’aurez plus besoin de saisir votre nom d’utilisateur / mot de passe.

Tout cela se produit car git ne fournit pas d’option dans les commandes clone / pull / push / fetch pour envoyer les informations d’identification via un canal. Bien qu’il donne credential.helper, il stocke sur le système de fichiers ou crée un démon, etc. Souvent, les identifiants de GIT sont au niveau du système et il incombe à l’application d’invoquer les commandes git. Très dangereux en effet.

Voici ce que je devais contourner. 1. La version de Git (git –version) doit être supérieure ou égale à 1.8.3.

GIT CLONE

Pour le clonage, utilisez “git clone URL” après avoir changé l’URL du format http: // {myuser} @ {my_repo_ip_address} / {myrepo_name.git} en http: // {myuser}: {mypwd} @ {my_repo_ip_address} /{myrepo_name.git}

Ensuite, purgez le référentiel du mot de passe comme dans la section suivante.

PURGE

Maintenant, cela aurait disparu et

  1. écrit le mot de passe dans git remote origine. Tapez “git remote -v” pour voir les dommages. Corrigez cela en définissant l’URL d’origine distante sans mot de passe. “git remote set_url origine http: // {myuser} @ {my_repo_ip_address} / {myrepo_name.git}”
  2. écrit le mot de passe en .git / logs dans le référentiel. Remplacez toutes les instances de pwd par une commande unix comme find .git / logs -exec sed -i ‘s / {my_url_with_pwd} // g’ {} \; Ici, {my_url_with_pwd} est l’URL avec le mot de passe. Comme l’URL comporte des barres obliques, elle doit être évitée par deux barres obliques inverses. Par exemple, pour l’URL http: // kris: passs123@192.168.0.1/proj.git -> http: \\ / \\ / kris: passs123@192.168.0.1 \\ / proj.git

Si votre application utilise Java pour émettre ces commandes, utilisez ProcessBuilder au lieu de Runtime. Si vous devez utiliser Runtime, utilisez getRunTime (). Exec qui utilise le tableau Ssortingng comme argument avec / bin / bash et -c comme arguments plutôt que celui qui prend un seul Ssortingng comme argument.

GIT FETCH / PULL / PUSH

  1. définir le mot de passe dans l’URL distante de git comme suit: “git remote set_url origine http: // {myuser}: {mypwd} @ {my_repo_ip_address} / {myrepo_name.git}”
  2. Emettez la commande git fetch / push / pull. Vous ne serez alors pas invité à saisir le mot de passe.
  3. Effectuez la purge comme dans la section précédente. Ne le manquez pas.

Si votre PC est sécurisé ou que vous ne vous souciez pas de la sécurité du mot de passe, cela peut être réalisé très simplement. En supposant que le référentiel distant se trouve sur GitHub et que l’ origin est votre nom local pour le référentiel distant, utilisez cette commande

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

L’indicateur --push garantit que cela modifie --push l’URL du référentiel pour la commande git push . (La question posée dans le message original concerne uniquement la commande git push . Exiger un nom d’utilisateur + mot de passe uniquement pour les opérations Push est la configuration normale des référentiels publics sur GitHub. Notez que les repositorys privés sur GitHub nécessitent également un nom d’utilisateur récupérer des opérations, donc pour un repository privé, vous ne voudriez pas utiliser le --push flag …)

AVERTISSEMENT: Ceci est insortingnsèquement non sécurisé car:

  1. votre fournisseur de services Internet, ou toute personne connectant vos access réseau, peut facilement voir le mot de passe en texte brut dans l’URL;

  2. Toute personne ayant access à votre PC peut afficher votre mot de passe en utilisant git remote show origin .

C’est pourquoi l’utilisation d’une clé SSH est la réponse acceptée.

Même une clé SSH n’est pas totalement sécurisée . Quiconque accède à votre PC peut toujours, par exemple, effectuer des poussées qui détruisent votre référentiel ou, pire encore, faire des modifications mineures à votre code. (Tous les commits poussés sont évidemment très visibles sur GitHub. Mais si quelqu’un voulait changer votre code subrepticement, il pourrait – --amend un commit précédent sans modifier le message de validation, puis le pousser. Ce serait furtif et difficile à remarquer en pratique.)

Mais révéler votre mot de passe est pire . Si un attaquant prend connaissance de votre nom d’utilisateur et de votre mot de passe, il peut faire des choses comme vous exclure de votre propre compte, supprimer votre compte, supprimer définitivement le référentiel, etc.


Alternativement – pour plus de simplicité et de sécurité – vous ne pouvez fournir que votre nom d’utilisateur dans l’URL, de sorte que vous devrez taper votre mot de passe chaque fois que vous git push ferez mais vous ne devrez pas donner votre nom d’utilisateur à chaque fois. (J’aime bien cette approche, le fait de devoir taper le mot de passe me permet de réfléchir chaque fois que je git push , donc je ne peux pas le git push par hasard).

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

Vous devez configurer une clé privée SSH, vous pouvez passer en revue cette page , comment faire l’installation sur Mac, si vous êtes sur Linux, le guide devrait être presque identique, sous Windows vous auriez besoin d’un outil comme MSYS .

Étape 1 –

Créez des clés SSH sur votre système Linux en utilisant la commande ci-dessous

 ssh-keygen -t rsa -b 4096 -C "your_email" 

Il vous demandera la phrase secrète et le nom du fichier (par défaut, ~ / .ssh / id_rsa, ~ / .ssh / id_rsa.pub)

Étape 2 –

Une fois les fichiers créés, ajoutez la clé publique id_rsa.pub à la section ssh du compte github.

Étape 3 –

Sur votre machine, ajoutez la clé privée id_rsa à ssh-agent en utilisant la commande ci-dessous

 ssh-add ~/.ssh/id_rsa 

Étape 4 –

Ajoutez maintenant l’URL distante git@github.com: nom_utilisateur / repo_name.git à votre repo git local en utilisant la commande ci-dessous.

 git remote remove origin git remote add origin git@github.com:user_name/repo_name.git 

C’est tout.

Apparaît que, au moins lors de l’utilisation de TortoiseGIT sous Windows, il est possible de créer les clés SSH et de les transférer sur le serveur GIT en utilisant simplement:

 > ssh-keygen.exe > ssh-copy-id [username]@[GIT_server] 

J’ai créé un repo vide dans github puis …

 git push -u origin master 

Vous devez configurer l’URL ssh distante comme décrit ci-dessus.

Exécuter la commande ci-dessous a résolu le problème pour moi.

 git config --global credential.helper wincred 

S’il vous plaît se référer à la documentation ci-dessous github:

 https://help.github.com/articles/caching-your-github-password-in-git/