Git sur Bitbucket: toujours demandé un mot de passe, même après avoir téléchargé ma clé SSH publique

180

J'ai téléchargé mes clés SSH~/.ssh/id_rsa.pub sur Bitbucket comme expliqué , mais Git me demande toujours mon mot de passe à chaque opération (comme git pull). Ai-je oublié quelque chose?

C'est un dépôt privé (fork du dépôt privé d'une autre personne) et je l'ai cloné comme ceci:

git clone [email protected]:Nicolas_Raoul/therepo.git

Voici mon local .git/config:

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = https://[email protected]/Nicolas_Raoul/therepo.git
[branch "master"]
        remote = origin
        merge = refs/heads/master

Dans le même environnement avec la même clé publique, Git sur Github fonctionne très bien.
.sshest rwx------, .ssh/id_rsaest -rw-------, .ssh/id_rsa.pubest-rw-r--r--

Nicolas Raoul
la source

Réponses:

265

Êtes-vous sûr de l'avoir cloné à l'aide de l'URL ssh?

L'url de l'origine indique url = https://[email protected]/Nicolas_Raoul/therepo.gitque si elle utilise https, elle vous demandera un mot de passe indépendamment de vos clés ssh.

Donc, ce que vous voulez faire est ce qui suit:

ouvrez votre fichier de configuration dans votre dépôt actuel.

vim .git/config

et changez la ligne avec l'url de

[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = https://[email protected]/Nicolas_Raoul/therepo.git

à

[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = [email protected]:Nicolas_Raoul/therepo.git
manojlds
la source
62
Vous avez raison, merci! J'avais probablement cloné avec la mauvaise URL. J'ai remplacé l'URL .git/configpar [email protected]:Nicolas_Raoul/therepo.gitet maintenant cela fonctionne!
Nicolas Raoul
8
et pour changer la télécommande en utilisant git stackoverflow.com/questions/2432764/…
Alex Nolasco
3
C'est bitbucket qui m'a suggéré l'url https lors de la création d'un référentiel! Comment venir!
Denis Kniazhev
4
Gardez à l'esprit que si votre bitbucket est privé, si vous souhaitez utiliser le protocole git, vous devez ajouter votre clé ssh au site Web de BitBuket dans vos paramètres.
cevaris
7
J'ai dû changer l'URL en ssh://[email protected]/userName/repoName.git- sans ssh://préfixe, cela n'a pas fonctionné.
trygub
34

Comme expliqué ici , si vous clonez avec l' URL SSH , vous n'avez pas besoin de saisir le nom d'utilisateur / mot de passe chaque fois que vous appuyez / tirez. Vérifiez la réponse ci-dessus par @manojlds

Mais si vous souhaitez cloner avec HTTPS et que vous souhaitez éviter de saisir un nom d'utilisateur / mot de passe à chaque fois, vous pouvez stocker les informations d'identification dans le cache avec la commande ci-dessous:

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

où 3600 (secondes) signifie 1 heure, vous pouvez le changer selon vos besoins.

Ajeet Shah
la source
@atilkan Dans ce cas, pouvez-vous fournir votre machine / OS et les informations de version de git? Et le message d'erreur le cas échéant lorsque vous essayez de définir le paramètre de cache.
Ajeet Shah
J'ai cloné le référentiel de quelqu'un sous forme de bitbucket, et voici mes télécommandes. manecs-MBP:LocationTracker manec$ git remote -v origin https://[email protected]/Vysh1/locationtracker.git (fetch) origin https://[email protected]/Vysh1/locationtracker.git (push)
Banee Ishaque K
@AjeetShah et si j'ai entré le mauvais mot de passe? serait-il également mettre en cache le mauvais mot de passe?
anaval
@anaval Pourquoi n'essayez-vous pas cela et après cela, essayez d'entrer le mot de passe correct après avoir effacé ou désactivé le cache? Modifiez la réponse et dites-nous comment vous avez fait ça :)
Ajeet Shah
19

Son déjà répondu ci-dessus. Je vais résumer les étapes à vérifier ci-dessus.

exécuter git remote -vdans le répertoire du projet. Si la sortie affiche une URL distante commençant par, https://abcvous aurez peut-être besoin d'un mot de passe à chaque fois.

Donc, pour changer l'URL distante, exécutez git remote set-url origin {ssh remote url address starts with mostly [email protected]:}.

Exécutez maintenant git remote -v pour vérifier l'URL distante modifiée.

Reportez-vous: https://help.github.com/articles/changing-a-remote-s-url/

Shiva Kumar
la source
16

Bonjour les Googleurs du futur.

Sur MacOS> = High Sierra, la clé SSH n'est plus enregistrée dans KeyChain pour des raisons .

L'utilisation ssh-add -Kne survit plus aux redémarrages.

Voici 3 solutions possibles .

J'ai utilisé la première méthode avec succès. J'ai créé un fichier appelé configdans ~/.ssh:

Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_rsa
Vaiden
la source
2
Cela nécessite plus d'attention! J'ai passé des siècles à chercher une solution et la première avec le configfichier /.sshfonctionne parfaitement!
Kitson
1
Cette réponse a résolu mon problème sur MacOs: cd ~/.ssh+ ls+ nano config(le fichier était déjà créé) + ajouter du code dans la réponse de Vaiden. Puis contrôlez X + Y pour enregistrer le fichier.
Sébastien Gicquel
9

Dans le cas d'une requête HTTP, il est également et alternativement possible de coller les informations d'identification (avec mot de passe) directement dans l'url:

http://username:[email protected]/...

Cela vous évitera d'avoir à redonner vos informations d'identification à chaque fois. Modifiez simplement votre .git / config (l'url).

Sven W.
la source
10
Mais pas sûr. Et ne fonctionne pas si le mot de passe a une lettre comme$%
Gank
3
Toute personne qui lit ce commentaire, s'il vous plaît rappelez - vous: juste parce qu'il fonctionne , ne signifie pas qu'il est juste . Si vous copiez votre mot de passe n'importe où de manière permanente, c'est que vous le faites mal. Même chose pour ceux qui définissent toujours les autorisations de dossier sur 777: arrêter, réfléchir, rechercher, comprendre, puis le faire correctement.
dKen
9

Aucune de ces réponses ne m'a aidé, il s'est avéré que mon problème était légèrement différent. C'était ssh qui me demandait mon mot de passe à chaque fois, avant d'envoyer la clé. Donc, ce que je devais faire était de lier mon mot de passe avec cette commande:

ssh-add -K ~/.ssh/id_rsa

Il vous demandera ensuite votre mot de passe et le stockera. Cela pourrait être la solution que vous recherchez si chaque fois que vous êtes invité à entrer un mot de passe, il est indiqué

Entrez la phrase de passe pour la clé '/Users//.ssh/id_rsa':

Plus d'infos ici

REMARQUE: j'ai utilisé cela avec succès sur ma machine mac, mais comme @Rob Kwasowski l'a souligné ci-dessous, l' Koption majuscules est unique à mac. Sinon sur mac, vous devrez utiliser des minuscules k(ce qui fonctionne probablement aussi pour mac mais je n'ai pas testé).

pilePoussoir
la source
1
C'est génial, mais cela devrait être en minuscules k:ssh-add -k ~/.ssh/id_rsa
Rob Kwasowski
pourriez-vous élaborer s'il vous plaît?
stackPusher
Comme expliqué ici: ssh.com/ssh/add , l'option de ligne de commande est en minuscules ket non en majuscules car ces options sont sensibles à la casse.
Rob Kwasowski
à droite, mais l'option K majuscule ajoutera également la clé au trousseau, tandis que k minuscule ajoutera uniquement la clé à l'agent. alors ce que je demande est "pourquoi ne voudriez-vous pas que la clé soit également ajoutée à votre trousseau?"
stackPusher
1
S'il vous plaît être conscient des différences de plate-forme, -Kest spécifique à Mac: help.github.com/en/articles/error-ssh-add-illegal-option----k
Rob Kwasowski
5
webdev5
la source
Je pense que Step 1c'est pour Windowset Step 2c'est pour Linuxmais vous avez oublié de le mentionner correctement.
Ajeet Shah
J'ai exécuté ces 3 étapes sur ma boîte Windows et cela a fonctionné.
webdev5
2
Dans ce cas, je voudrais ajouter que sur Linux OS, nous n'avons besoin que de step2 et step3 pour le même effet :)
Ajeet Shah
4

Ce qui suit suppose un accès en ligne de commande via iTerm / Terminal à bitbucket.

Pour MacOS Sierra 10.12.5, mon système a manifesté un problème équivalent: demander ma phrase de passe SSH à chaque connexion à bitbucket.

Le problème est lié aux mises à jour d'OpenSSH dans macOS 10.12.2, qui sont décrites ici dans la note technique TN2449 .

Vous voudrez peut-être personnaliser votre solution, mais ce qui suit fonctionnera une fois ajouté à votre fichier ~ / .ssh / config:

Host *
    UseKeychain yes

Pour plus d'informations sur les configurations ssh, consultez les pages de manuel de ssh_config:

% man ssh_config

Une autre chose: il y a une bonne description du super - utilisateur ici qui traite de ce problème et de diverses solutions en fonction de vos besoins et de votre configuration.

pob
la source
2

J'ai cloné le référentiel avec une URL HTTPS au lieu de l'URL SSH, donc même après avoir ajouté la clé SSH, il me demandait un mot de passe sur Bash Shell.

J'ai juste édité le ./.git/configfichier et changé la valeur de la urlvariable en remplaçant simplement le https://àssh://

Par exemple

[core]
        ...
        ...
        ...
[remote "origin"]
        url = https://<username>@bitbucket.org/<username>/<repository_name>.git
        fetch = +refs/heads/*:refs/remotes/origin/*
        ...
        ...
        ...

Changé en:

[core]
        ...
        ...
        ...
[remote "origin"]
        url = ssh://<username>@bitbucket.org/<username>/<repository_name>.git
        fetch = +refs/heads/*:refs/remotes/origin/*
        ...
        ...
        ...
Swaroop Bhagwat
la source
1

Vous devrez peut-être vérifier votre fichier d'identités SSH. Vous pouvez guider BitBucket pour qu'il examine une clé privée différente / incorrecte de la clé publique équivalente que vous avez enregistrée sur BitBucket.

Vérifiez-le avec tail ~/.ssh/config- vous verrez quelque chose de similaire à:

Host bitbucket.org
 HostName bitbucket.org
 IdentityFile ~/.ssh/personal-bitbucket-ssh-key

N'oubliez pas que l'ajout d'identités supplémentaires (comme le travail et la maison) peut être effectué avec la ssh-addcommande, par exemple:

ssh-keygen -t rsa -C "companyName" -f "companyName"
ssh-add ~/.ssh/companyName

Une fois que vous avez confirmé quelle clé privée est examinée localement, vous pouvez alors prendre votre équivalent public, dans ce cas:

cat ~/.ssh/personal-bitbucket-ssh-key.pub | pbcopy

Et collez ce chiffre sur BitBucket. Vos push git seront désormais autorisés (à condition que vous utilisiez le clone SSH comme l'ont souligné les réponses ci-dessus) sans mot de passe, car votre appareil est un appareil convivial reconnu.

Espérons que cela aide à clarifier les choses pour quelqu'un.

Subvention
la source
0

Avec moi, bien que j'aie exécuté 'git clone ssh: //[email protected]: 7999 / projName / projA.git', on me demandait toujours le mot de passe pour ce nouveau dépôt que j'ai cloné, donc en comparant son .git / config vers d'autres dépôts qui fonctionnent, il s'est avéré être l'url sous la section [remote "origin"], il a été défini sur le chemin ssh ci-dessus pour le nouveau dépôt, mais a été défini sur https: xxx pour celui qui fonctionne .

Ninos
la source
0

J'avais d'autres bizarreries à me connecter. Je suis tombé sur quelque chose qui semblait totalement stupide mais qui fonctionnait dans mon cas. Accédez simplement au trousseau de MacOS. Recherchez l'icône de verrouillage de connexion dans la barre latérale. Cliquez dessus pour vous déconnecter, puis cliquez pour vous connecter. Cela semble stupide mais cela a résolu mes problèmes. Ça vaut le coup.

smileBot
la source