Je git Push
mon travail sur un référentiel Git distant.
Chaque Push
m'invitera à saisir username
et password
. Je voudrais l'éviter pour chaque Push, mais comment le configurer pour l'éviter?
Ouvrez le terminal pour créer des clés ssh:
cd ~ #Your home directory
ssh-keygen -t rsa #Press enter for all values
(Fonctionne uniquement si le programme commit est capable d'utiliser des certificats/clés ssh privées et publiques)
Voici un procédure pas à pas sur PuTTY gen pour les étapes ci-dessus.
Cette étape varie en fonction de la configuration de votre télécommande.
S'il s'agit d'un référentiel GitHub et que vous disposez de privilèges d'administration, accédez à settings et cliquez sur 'ajouter une clé SSH'. Copiez le contenu de votre ~/.ssh/id_rsa.pub
dans le champ "Clé".
Si votre référentiel est administré par quelqu'un d'autre, donnez votre id_rsa.pub
à l'administrateur.
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
Si vous avez suivi les étapes ci-dessus et recevez toujours l'invite du mot de passe, assurez-vous que l'URL de votre référentiel est sous la forme.
git+ssh://[email protected]/username/reponame.git
par opposition à
https://github.com/username/reponame.git
Pour voir l'URL de votre dépôt, lancez:
git remote show Origin
Vous pouvez changer l'URL avec:
git remote set-url Origin git+ssh://[email protected]/username/reponame.git
[1] Cette section incorpore la réponse de Eric P
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': <USERNAME>
Password for 'https://[email protected]': <PASSWORD>
Utiliser 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 pendant 7200 secondes (2 heures) .
Remarque: Aide aux 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 du mot de passe, assurez-vous que votre URL de dépôt est au format
git+ssh://[email protected]/username/reponame.git
par opposition à
https://github.com/username/reponame.git
Pour voir l'URL de votre dépôt, lancez:
git remote show Origin
Vous pouvez changer l'URL avec git remote set-url
comme suit:
git remote set-url Origin git+ssh://[email protected]/username/reponame.git
Utilisez simplement l'option --repo
pour la commande git Push. Comme ça:
$ git Push --repo https://name:[email protected]/name/repo.git
Vous pouvez utiliser le git-credential-store via
git config credential.helper store
which stocke votre mot de passe non crypté dans le système de fichiers } _:
L'utilisation de cet assistant stockera vos mots de passe non chiffrés sur le disque, uniquement protégés par les autorisations du système de fichiers. Si cela n’est pas un compromis de sécurité acceptable, essayez git-credential-cache ou recherchez un assistant s’intégrant au stockage sécurisé fourni par votre système d’exploitation.
Utilisez le git-credential-cache qui, par défaut, stocke le mot de passe pendant 15 minutes.
git config credential.helper cache
pour définir un délai différent, utilisez --timeout
(ici 5 minutes)
git config credential.helper 'cache --timeout=300'
- Si vous utilisez un Mac, Git est livré avec un mode «osxkeychain», qui met en cache les informations d’identité dans le trousseau sécurisé qui est associé à votre compte système. Cette méthode stocke les informations d'identification sur le disque et elles n'expirent jamais, mais elles sont chiffrées avec le même système que celui qui stocke les certificats HTTPS et les remplissages automatiques Safari.
- Si vous utilisez Windows, vous pouvez installer un utilitaire 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 confidentielles. Vous pouvez le trouver à l'adresse 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;
[email protected]:org/repo.git
La commutation a résolu le problème pour moi!
Câblez votre client git à votre magasin de données d'identification du système d'exploitation. Par exemple, sous Windows, vous liez l’assistant d’identité à Wincred:
git config --global credential.helper wincred
Y a-t-il un moyen d'éviter la saisie de mot de passe lors de l'utilisation de https: // sur GitHub?
Je voulais juste souligner quelque chose à propos de la solution mentionnée ci-dessus à plusieurs reprises:
git config credential.helper store
Vous pouvez utiliser n'importe quelle commande nécessitant un mot de passe après cela. Vous n'êtes pas obligé de pousser. (vous pouvez également extraire par exemple) Après cela, vous n'aurez plus besoin de saisir votre nom d'utilisateur/mot de passe.
Sous 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
J'ai utilisé la réponse suggérée par Pavel et cela a fonctionné pour moi. Ma différence était de le faire pendant que je rajoutais la télécommande, comme suit: git remote add (alias) https://(name:password)@github.com/(the remote address).git
Ma solution sous Windows:
ssh-keygen -t rsa
(appuyez sur enter pour toutes les valeurs)Your public key has been saved in /c/Users/<your_user_name_here>/.ssh/id_rsa.pub
Exécuter la commande ci-dessous a résolu le problème pour moi.
git config --global credential.helper wincred
Veuillez vous référer à la documentation ci-dessous de github:
https://help.github.com/articles/caching-your-github-password-in-git/
É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 -
Maintenant, ajoutez l'URL distante [email protected]: nom_utilisateur/nom_poste.git à votre dépôt git local à l'aide de la commande ci-dessous.
git remote remove Origin
git remote add Origin [email protected]:user_name/repo_name.git
C'est tout.
Tout cela est dû au fait que git ne fournit pas d’option dans les commandes clone/pull/Push/fetch pour envoyer les informations d’identification par 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 informations d'identification de GIT sont de niveau système et leur protection incombe à l'application qui appelle les commandes git. Très dangereux en effet.
Voici ce sur quoi je devais travailler ... 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 modifié l'URL du format suivant: http: // {myuser} @ {my_repo_ip_address}/{myrepo_name.git} à http: // {myuser}: {mypwd} @ {my_repo_ip_address} /{myrepo_name.git}
Puis purgez le référentiel du mot de passe comme dans la section suivante.
PURGE
Maintenant, cela aurait disparu et
Si votre application utilise Java pour émettre ces commandes, utilisez ProcessBuilder au lieu de Runtime. Si vous devez utiliser Runtime, utilisez getRunTime (). Exec, qui prend le tableau String comme arguments avec/bin/bash et -c comme arguments plutôt que celui qui prend une seule chaîne comme argument.
GIT FETCH/PULL/Push
Si votre PC est sécurisé ou si vous ne vous souciez pas de la sécurité par mot de passe, cela peut être réalisé très simplement. En supposant que le référentiel distant est sur GitHub et que Origin
est votre nom local pour le référentiel distant, utilisez cette commande.
git remote set-url --Push Origin https://<username>:<password>@github.com/<repo>
L'indicateur --Push
garantit que cela modifie uniquement l'URL du référentiel pour la commande git Push
. (La question posée dans le message d'origine concerne uniquement la commande git Push
. Exiger un nom d'utilisateur + un mot de passe uniquement pour les opérations Push constitue la configuration normale pour les référentiels public sur GitHub. Notez que les référentiels private sur GitHub nécessiteraient également un nom d'utilisateur + un mot de passe pour les opérations d'extraction et de récupération, vous ne voudrez donc pas utiliser le --Push flag
... pour un référentiel privé
AVERTISSEMENT: Ceci est intrinsèquement non sécurisé car:
votre FAI, ou quiconque se connectant à votre réseau, peut facilement voir le mot de passe en clair dans l’URL;
toute personne qui accède à votre PC peut voir 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. Toute personne qui accède à votre PC peut toujours, par exemple, faire des push qui détruisent votre référentiel ou - pire encore - Push commit en apportant des modifications subtiles à 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 changer le message de commit, puis forcer Push it. Ce serait furtif et assez 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 vous verrouiller votre compte, supprimer votre compte, supprimer définitivement le référentiel, etc.
Alternativement - pour plus de simplicité et sécurité - vous pouvez fournir uniquement votre nom d'utilisateur dans l'URL, de sorte que vous devrez taper votre mot de passe à chaque fois que vous git Push
mais que vous n'ayez pas à donner votre nom d'utilisateur à chaque fois. (J'aime bien cette approche, le fait de taper le mot de passe me donne une pause pour réfléchir chaque fois que je git Push
, donc je ne peux pas git Push
par accident.)
git remote set-url --Push Origin https://<username>@github.com/<repo>
Apparaît que, du moins lorsque TortoiseGIT est utilisé 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]
Autant que je sache, il y a simplement deux sûr moyens: ssh ou passwd crypté à l'aide d'un magasin de clés.
cat ~/.ssh/id_rsa.pub
, collez-le là-bas, nommez-le et enregistrez-le (si vous n'avez pas ce fichier, générez-en un par ssh-keygen -t rsa
- juste Entrée pour toutes les invites);git remote set-url Origin git+ssh://[email protected]/username/reponame.git
- vous pouvez d’abord le vérifier par git remote -v
);touch t; git add t; git commit -m "test"; git Push
et confirmez oui pour profiter du monde sans mot de passe}.Si vous utilisez simplement git config --global credential.helper store
comme indiqué par d’autres, vos mots de passe unencrypted seront simplement stockés dans un texte brut sous ~/.git-credentials
, ce qui n’est pas sûr.
Essayez de chiffrer comme
Sudo apt-get install libgnome-keyring-dev
Sudo make --directory=/usr/share/doc/git/contrib/credential/gnome-keyring
git config --global credential.helper /usr/share/doc/git/contrib/credential/gnome-keyring/git-credential-gnome-keyring
git config --global credential.helper store
Dans ce cas, vous utilisez
https://[email protected]/username/reponame.git
.