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 certificats / clés ssh privées et publiques)
Utilisez Putty Gen pour générer une clé
Exporter la clé en tant que clé SSH ouverte
Voici une procédure pas à pas sur la génération de 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 référentiel GitHub et que vous disposez de privilèges administratifs, accédez aux paramètres et cliquez sur 'ajouter une clé SSH'. Copiez le contenu de votre ~/.ssh/id_rsa.pubdans le champ intitulé «Clé».
Si votre référentiel est administré par quelqu'un d'autre, donnez-en votre administrateur id_rsa.pub.
Si votre référentiel distant est administré par votre, vous pouvez utiliser cette commande par exemple:
3. Définissez votre URL distante sur un formulaire qui prend en charge SSH 1
Si vous avez effectué les étapes ci-dessus et obtenez toujours l'invite de mot de passe, assurez-vous que l'URL de votre référentiel est dans le formulaire
J'ai exécuté l'étape 1 et l'étape 2 sur ubuntu mais il me demande toujours u_id passwd. J'ai également couru: ssh -T [email protected]. Toujours le même. Que faire?
Radhika
4
@Rads Avez-vous essayé l'autre réponse, par Eric P ?
y'2
2
@dialex Il voulait dire une personne qui administre le dépôt git distant.
selalerer
5
git remote set-url origin git + ssh: //[email protected]/username/reponame.git cette commande est utile pour moi.
ArtificiallyIntelligence
2
Cela a fonctionné pour moigit remote set-url origin [email protected]:/username/projectname.git
Kurt
181
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': <USERNAME>
Password for 'https://[email protected]': <PASSWORD>
L'utilisation doit également spécifier l' expiration de la mise en cache ,
Merci. Pouvez-vous expliquer ce que fait la commande config? Je me demande pourquoi il ne me demande même pas de mot de passe la première fois que je pousse vers un repo.
HelloWorldNoMore
1
@vivoconunxino Probablement parce que c'est intrinsèquement dangereux. À partir de la gitpage de manuel: "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."
cmaster - réintègre monica
15
Il manque un avertissement à cette réponse concernant l’ storeassistant d’identification stockant le mot de passe sur le disque non chiffré.
C'est ce qui a résolu mon problème après l'avoir utilisé git initlocalement, puis j'ai essayé de pousser après avoir ajouté la télécommande à partir d'un nouveau dépôt sur le site Web de GitHub.
sheldonkreger
1
Je ne sais pas pourquoi cela ne fait pas partie de la réponse acceptée. Merci!
jwalk
1
La réponse acceptée doit être composée de la réponse réellement acceptée PLUS celle-ci.
Puce
3
Vous pouvez omettre le "git + ssh: //" et utilisez simplement[email protected]/username/reponame.git
Ivan Shulev
1
@IvanShulev J'ai essayé initialement sans git + ssh et je n'ai pas travaillé
Antonello
40
Utilisez simplement l' --repooption pour la commande git push. Comme ça:
Ou vous pouvez définir cela par défaut avecgit remote set-url origin https://name:[email protected]/repo.git
ACyclic
Je note que la définition de l'URL ne [email protected]/....gitfonctionne que si cela ne vous dérange pas d'être harcelé pour le mot de passe à chaque fois.
1er
Pour les utilisateurs de github, git push --repo https://github.com/Username/repo cela fonctionne sans l' .git extension
L'utilisation de cet assistant stockera vos mots de passe non chiffrés sur le disque, protégés uniquement par les autorisations du système de fichiers. Si ce n'est pas 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 par défaut 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)
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é attaché à votre compte système. Cette méthode stocke les informations d'identification sur le disque, et elles n'expirent jamais, mais elles sont cryptées avec le même système qui stocke les certificats HTTPS et les remplissages automatiques de Safari. Exécution de ce qui suit sur la ligne de commande activer cette fonction: git config --global credential.helper osxkeychain. Vous devrez également stocker les informations d'identification dans le trousseau à l'aide de l'application Trousseau.
Si vous utilisez Windows, vous pouvez installer un assistant appelé «Git Credential Manager for Windows». Ceci est similaire à l'assistant «osxkeychain» décrit ci-dessus, mais utilise le Windows Credential Store pour contrôler les informations sensibles. Il peut être trouvé à https://github.com/Microsoft/Git-Credential-Manager-for-Windows . [met l'accent sur le mien]
Connectez votre client git à votre magasin d'informations d'identification de système d'exploitation. Par exemple, dans Windows, vous liez l'assistant d'informations d'identification à wincred:
Je voulais juste faire remarquer plusieurs fois la solution ci-dessus:
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 besoin de pousser. (vous pouvez également tirer par exemple) Après cela, vous n'aurez plus besoin de taper votre nom d'utilisateur / mot de passe.
J'ai utilisé la réponse que Pavel a suggérée 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
cat ~/.ssh/id_rsa.pub, collez-le là, nommez-le et enregistrez-le (si vous n'avez pas un tel fichier, générez-en un par vous-même ssh-keygen -t rsa- Entrez simplement pour toutes les invites)
Accédez à votre référentiel local et mettez à jour votre télécommande par git remote set-url origin git+ssh://[email protected]/username/reponame.git- vous pouvez le vérifier d'abord engit remote -v );
Voilà, juste touch t; git add t; git commit -m "test"; git pushet confirmez oui pour profiter du monde sans mot de passe .
passwd ENCRYPTED using a keystore
Si vous l'utilisez simplement git config --global credential.helper storecomme d'autres l'ont mentionné, vos mots de passe non chiffrés seront simplement stockés dans un texte en clair sous ~/.git-credentialslequel il n'est pas sûr que cela puisse paraître.
Essayez de le crypter 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.
Si votre PC est sécurisé ou que 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 se trouve sur GitHub et qu'il origins'agit de votre nom local pour le référentiel distant, utilisez cette commande
L' --pushindicateur garantit que cela modifie l'URL du référentiel pour la git pushcommande uniquement. (La question posée dans le message d'origine concerne git pushuniquement la commande. Exiger un nom d'utilisateur + mot de passe uniquement pour les opérations push est la configuration normale pour les référentiels publics sur GitHub. Notez que les référentiels privés sur GitHub nécessiteraient également un nom d'utilisateur + mot de passe pour les opérations d'extraction et de récupération , donc pour un dépôt privé, vous ne voudriez pas utiliser le --push flag...)
AVERTISSEMENT: cela n'est pas sûr par nature car:
votre FAI, ou toute personne enregistrant vos accès réseau, peut facilement voir le mot de passe en texte brut dans l'URL;
toute personne ayant accès à votre PC peut afficher votre mot de passe à l'aide de 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 push qui détruisent votre référentiel ou - pire - push s'engage à apporter 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 le pousser. Ce serait furtif et assez difficile à remarquer dans la pratique. )
Mais révéler votre mot de passe est pire . Si un attaquant prend connaissance de votre nom d'utilisateur + mot de passe, il peut faire des choses comme vous verrouiller hors de votre propre compte, supprimer votre compte, supprimer définitivement le référentiel, etc.
Alternativement - pour des raisons 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 git pushmais vous n'aurez pas à donner votre nom d'utilisateur à chaque fois. (J'aime beaucoup cette approche, avoir à taper le mot de passe me donne une pause pour réfléchir à chaque fois que je le fais git push, donc je ne peux pas git pushpar accident.)
Et si le mot de passe a @, il brise la commande pensant le mot de passe après @ dans le cadre du serveur git?
Pranav Singh
Si votre mot de passe contient «@», vous êtes seul ici, désolé. Vous pouvez changer votre mot de passe?
radfast
Besoin de soulever une demande de changement de mot de passe car je faisais de l'automatisation pour l'intégration continue avec un compte de service (non personnel). Clés SSH actuellement utilisées pour une connexion sécurisée
Pranav Singh
1
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 informations d'identification de GIT sont celles du niveau système et il incombe à l'application de les appeler à l'aide des commandes git. Très dangereux en effet.
Voici ce que j'ai dû contourner. 1. La version 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}
Purgez ensuite le référentiel du mot de passe comme dans la section suivante.
PURGE
Maintenant, cela aurait disparu et
écrit le mot de passe dans git remote origin. Tapez "git remote -v" pour voir les dégâts. Corrigez cela en définissant l'URL d'origine distante sans mot de passe. "git remote set_url origin http: // {myuser} @ {my_repo_ip_address} / {myrepo_name.git}"
écrit le mot de passe dans .git / logs dans le référentiel. Remplacez toutes les instances de pwd à l'aide d'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 mot de passe. Étant donné que l'URL comporte des barres obliques, elle doit être échappée par deux barres obliques en arrière. Par exemple, pour l'URL http: // kris: [email protected]/proj.git -> http: \\ / \\ / kris: [email protected] \\ / proj.git
Si votre application utilise Java pour exécuter 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
définissez le mot de passe dans l'url de git remote comme: "git remote set_url origin http: // {myuser}: {mypwd} @ {my_repo_ip_address} / {myrepo_name.git}"
Émettez la commande git fetch / push / pull. Le mot de passe ne vous sera alors pas demandé.
Effectuez la purge comme dans la section précédente. Ne le manquez pas.
Vous devez configurer une clé privée SSH, vous pouvez consulter cette page , comment faire la configuration sur Mac, si vous êtes sous Linux, le guide devrait être presque le même, sous Windows, vous auriez besoin d'un outil comme MSYS .
Apparaît qu'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:
Réponses:
1. Générez une clé SSH
Linux / Mac
Ouvrez le terminal pour créer des clés ssh:
Pour les fenêtres
(Fonctionne uniquement si le programme de validation est capable d'utiliser des certificats / clés ssh privées et publiques)
Voici une procédure pas à pas sur la génération de 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 référentiel GitHub et que vous disposez de privilèges administratifs, accédez aux paramètres 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-en votre administrateur
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 obtenez toujours l'invite de mot de passe, assurez-vous que l'URL de votre référentiel est dans le formulaire
par opposition à
Pour voir votre URL de dépôt, exécutez:
Vous pouvez modifier l'URL avec:
[1] Cette section reprend la réponse d' Eric P
la source
git remote set-url origin [email protected]:/username/projectname.git
Authentification permanente avec les référentiels Git,
Exécutez la commande suivante pour activer la mise en cache des informations d'identification.
L'utilisation doit également spécifier l' expiration de la mise en cache ,
Après avoir activé la mise en cache des informations d'identification, il sera mis en cache pendant 7200 secondes (2 heures) .
Remarque: assistant d'identification stockant le mot de passe non chiffré sur le disque local.
la source
git
page de manuel: "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."store
assistant d’identification stockant le mot de passe sur le disque non chiffré.git config --unset credential.helper
Si vous avez déjà configuré vos clés SSH et que vous recevez toujours l'invite de mot de passe, assurez-vous que l'URL de votre dépôt est au format
par opposition à
Pour voir votre URL de dépôt, exécutez:
Vous pouvez changer l'URL
git remote set-url
comme ceci:la source
git init
localement, puis j'ai essayé de pousser après avoir ajouté la télécommande à partir d'un nouveau dépôt sur le site Web de GitHub.[email protected]/username/reponame.git
Utilisez simplement l'
--repo
option pour la commande git push. Comme ça:la source
git remote set-url origin https://name:[email protected]/repo.git
[email protected]/....git
fonctionne que si cela ne vous dérange pas d'être harcelé pour le mot de passe à chaque fois.git push --repo https://github.com/Username/repo
cela fonctionne sans l'.git
extensionEnregistrer indéfiniment
Vous pouvez utiliser le git-credential-store via
qui stocke votre mot de passe non crypté dans le système de fichiers :
Avec un timeout
Utilisez le git-credential-cache qui stocke par défaut le mot de passe pendant 15 minutes.
pour définir un délai différent, utilisez
--timeout
(ici 5 minutes)Enregistrement sécurisé indéfiniment (OS X et Windows)
la source
credential.helper cache
ne fonctionne PAS. Ça devrait l'êtregit config --global credential.helper wincred
.J'utilisais le lien https (
https://github.com/org/repo.git
) au lieu du lien ssh;La commutation a résolu le problème pour moi!
la source
Étape 1 -
Créez des clés SSH sur votre système Linux en utilisant la commande ci-dessous
Il vous demandera la phrase secrète et le nom du fichier (par défaut sera ~ / .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 à l'aide de la commande ci-dessous
Étape 4 -
Ajoutez maintenant l'url distante [email protected]: nom_utilisateur / nom_repo.git à votre dépôt git local à l'aide de la commande ci-dessous.
C'est tout.
la source
Connectez votre client git à votre magasin d'informations d'identification de système d'exploitation. Par exemple, dans Windows, vous liez l'assistant d'informations d'identification à wincred:
Existe-t-il un moyen d'ignorer la saisie de mot de passe lors de l'utilisation de https: // sur GitHub?
la source
Sur le système d'exploitation Windows, utilisez-le à la place, cela fonctionne pour moi:
par exemple
la source
Je voulais juste faire remarquer plusieurs fois la solution ci-dessus:
Vous pouvez utiliser n'importe quelle commande nécessitant un mot de passe après cela. Vous n'avez pas besoin de pousser. (vous pouvez également tirer par exemple) Après cela, vous n'aurez plus besoin de taper votre nom d'utilisateur / mot de passe.
la source
J'ai utilisé la réponse que Pavel a suggérée 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
la source
L'exécution de la commande ci-dessous a résolu le problème pour moi.
Veuillez vous référer à la documentation github ci-dessous:
la source
Pour autant que je sache, il existe simplement deux méthodes sûres : ssh ou passwd crypté à l'aide d'un fichier de clés .
SSH
cat ~/.ssh/id_rsa.pub
, collez-le là, nommez-le et enregistrez-le (si vous n'avez pas un tel fichier, générez-en un par vous-mêmessh-keygen -t rsa
- Entrez simplement pour toutes les invites)git remote set-url origin git+ssh://[email protected]/username/reponame.git
- vous pouvez le vérifier d'abord engit remote -v
);touch t; git add t; git commit -m "test"; git push
et confirmez oui pour profiter du monde sans mot de passe .passwd ENCRYPTED using a keystore
Si vous l'utilisez simplement
git config --global credential.helper store
comme d'autres l'ont mentionné, vos mots de passe non chiffrés seront simplement stockés dans un texte en clair sous~/.git-credentials
lequel il n'est pas sûr que cela puisse paraître.Essayez de le crypter comme
la source
Ma solution sur Windows:
ssh-keygen -t rsa
(Appuyez sur Entrée pour toutes les valeurs)Your public key has been saved in /c/Users/<your_user_name_here>/.ssh/id_rsa.pub
la source
Si votre PC est sécurisé ou que 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 se trouve sur GitHub et qu'il
origin
s'agit de votre nom local pour le référentiel distant, utilisez cette commandeL'
--push
indicateur garantit que cela modifie l'URL du référentiel pour lagit push
commande uniquement. (La question posée dans le message d'origine concernegit push
uniquement la commande. Exiger un nom d'utilisateur + mot de passe uniquement pour les opérations push est la configuration normale pour les référentiels publics sur GitHub. Notez que les référentiels privés sur GitHub nécessiteraient également un nom d'utilisateur + mot de passe pour les opérations d'extraction et de récupération , donc pour un dépôt privé, vous ne voudriez pas utiliser le--push flag
...)AVERTISSEMENT: cela n'est pas sûr par nature car:
votre FAI, ou toute personne enregistrant vos accès réseau, peut facilement voir le mot de passe en texte brut dans l'URL;
toute personne ayant accès à votre PC peut afficher votre mot de passe à l'aide de
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 push qui détruisent votre référentiel ou - pire - push s'engage à apporter 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 le pousser. Ce serait furtif et assez difficile à remarquer dans la pratique. )Mais révéler votre mot de passe est pire . Si un attaquant prend connaissance de votre nom d'utilisateur + mot de passe, il peut faire des choses comme vous verrouiller hors de votre propre compte, supprimer votre compte, supprimer définitivement le référentiel, etc.
Alternativement - pour des raisons 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
git push
mais vous n'aurez pas à donner votre nom d'utilisateur à chaque fois. (J'aime beaucoup cette approche, avoir à taper le mot de passe me donne une pause pour réfléchir à chaque fois que je le faisgit push
, donc je ne peux pasgit push
par accident.)la source
@
, il brise la commande pensant le mot de passe après @ dans le cadre du serveur git?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 informations d'identification de GIT sont celles du niveau système et il incombe à l'application de les appeler à l'aide des commandes git. Très dangereux en effet.
Voici ce que j'ai dû contourner. 1. La version 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}
Purgez ensuite 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 exécuter 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
la source
Vous devez configurer une clé privée SSH, vous pouvez consulter cette page , comment faire la configuration sur Mac, si vous êtes sous Linux, le guide devrait être presque le même, sous Windows, vous auriez besoin d'un outil comme MSYS .
la source
Apparaît qu'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:
la source