web-dev-qa-db-fra.com

Accès au référentiel refusé. l'accès via une clé de déploiement est en lecture seule

Après avoir cloné avec succès mon référentiel de heroku et ajouté une autre télécommande

1/ git clone [email protected]:[APP].git
2/ git remote add bitbucket ssh://[email protected]/[ACCOUNT]/[REPO].git
3/ git Push bitbucket master

Je reçois toujours cette erreur après avoir exécuté line (3) ou utilisé SourceTree

conq: repository access denied. access via a deployment key is read-only.

D'abord, je ne comprends pas ce que ce message signifie dans la pratique. Et c'est dommage.

J'ai créé la paire de clés ssh et ajouté à heroku:

ssh-keygen -t rsa 
heroku keys:add ./id_rsa.pub 

J'ai également ajouté ma clé dans la section des clés de déploiement de BitBucket. Mais je dois manquer quelque chose. Cette question n’est pas due à la paresse, j’ai lu divers documents, dont des guides BitBuckets. Mais cela ne résout toujours pas le problème.

Cet article est lié à Puis-je importer mon dépôt Heroku Git dans Bitbuket? Et comment?

FAITS ADDITIONNELS:

ssh -T [email protected]
conq: authenticated via a deploy key.

You can use git or hg to connect to Bitbucket. Shell access is disabled.


$ ssh -v [email protected]
OpenSSH_5.6p1, OpenSSL 0.9.8r 8 Feb 2011
debug1: Reading configuration data /Users/joel/.ssh/config
debug1: Applying options for bitbucket.org
debug1: Reading configuration data /etc/ssh_config
debug1: Applying options for *
debug1: Connecting to bitbucket.org [207.223.240.181] port 22.
debug1: Connection established.
debug1: identity file /Users/joel/.ssh/id_rsa type 1
debug1: identity file /Users/joel/.ssh/id_rsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.6
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host 'bitbucket.org' is known and matches the RSA Host key.
debug1: Found key in /Users/joel/.ssh/known_hosts:5
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/joel/.ssh/id_rsa
debug1: Remote: Forced command: conq deploykey:13907
debug1: Remote: Port forwarding disabled.
debug1: Remote: X11 forwarding disabled.
debug1: Remote: Agent forwarding disabled.
debug1: Remote: Pty allocation disabled.
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug1: read PEM private key done: type RSA
debug1: Remote: Forced command: conq deploykey:13907
debug1: Remote: Port forwarding disabled.
debug1: Remote: X11 forwarding disabled.
debug1: Remote: Agent forwarding disabled.
debug1: Remote: Pty allocation disabled.
debug1: Authentication succeeded (publickey).
Authenticated to bitbucket.org ([207.223.240.181]:22).
debug1: channel 0: new [client-session]
debug1: Requesting [email protected]
debug1: Entering interactive session.
debug1: Sending environment.
debug1: Sending env LC_CTYPE = UTF-8
PTY allocation request failed on channel 0

On dirait que tout va bien.

298
zabumba

La première confusion de mon côté a été de savoir exactement où placer les clés SSH dans BitBucket.

Je suis nouveau sur BitBucket et je définissais une clé de déploiement qui donne un accès en lecture uniquement.

Assurez-vous donc que vous définissez votre rsa pub key dans vos paramètres de compte BitBucket .

Cliquez sur votre avatar BitBucket et sélectionnez Paramètres Bitbucket (Gérer son compte). Là, vous pourrez définir des clés SSH .

J'ai simplement supprimé la clé de déploiement , je n'en ai pas besoin pour l'instant. Et ça a marché

enter image description here

710
zabumba

Maintenant, l'option SSH est sous les paramètres de sécurité

Cliquez sur votre avatar -> Paramètres Bitbucket -> Clé SSH -> Ajouter une clé

Collez votre clé publique

64
Sathish

vous devez ajouter votre clé à votre profil et PAS à un référentiel spécifique. suivez ceci: https://community.atlassian.com/t5/Bitbucket-questions/Comment -p/41337

17
Tomer

Les clés de déploiement sont en lecture seule. Pour activer l'accès en écriture, vous devez:

  • Supprimez cette clé de déploiement des paramètres de votre référentiel. De toute façon, vous ne pourrez pas écrire dans ce dépôt avec cette clé.

  • Allez dans "Avatar -> Paramètres -> Clés SSH" et ajoutez la même clé

  • Maintenant, essayez de pousser pour supprimer la branche

Vous pouviez écrire dans des référentiels auparavant, mais il s’agit d’un changement dans BitBucket qui ne vous permet plus d’écrire avec la clé de déploiement.

13
timhysniu

La "clé de déploiement" ne concerne que l'accès en lecture seule. Suivre est un bon moyen de travailler à travers cela.

  • Créez une clé SSH et ajoutez-la à bitbucket (Avatar de l'utilisateur -> Paramètre Bitbucket -> Clés SSH)
  • ~/.ssh/known_hosts
  • ssh-add -D (supprime les clés chargées sur l'agent SSH)
  • ssh-add ~/.ssh/your_private_key_for_bitbucket
  • ssh [email protected] -Tv (Vérifiez que votre clé s'habitue pour vous connecter à bitbucket)
  • git Push 'nom distant' 'nom de la branche'
10
Jerome Anthony

Vous devez d'abord supprimer la clé de déploiement si vous souhaitez ajouter la même clé sous Gérer la clé SSH du compte.

9
sent.ror

TLDR: ssh-add ~/.ssh/votre clé

Je viens de résoudre ce problème.

Et aucune des autres réponses n'a aidé.

J'ai eu un ./ssh/config avec tout ce qui est correct, ainsi qu'un référentiel précédent fonctionnant correctement (même compte bitbucket, même clé). Ensuite, j'ai généré une clé deploy_key, puis un nouveau référentiel.

Après cela, impossible de cloner le nouveau repo.

J'aurais aimé savoir comment/pourquoi l'agent ssh faisait des bêtises, mais l'ajout de la clé l'a résolu. Je veux dire en ajoutant la clé dans mon Ubuntu local, pas dans bitbucket admin. La commande est juste

    ~/.ssh$ ssh-add myregualrkey

J'espère que ça aide quelqu'un.

8
Tjunkie

C'est ce qui s'est passé lorsque j'ai essayé d'utiliser une clé de déploiement parce que c'est exactement ce que je voulais.

Je pouvais me connecter via ssh -T [email protected] et il me dirait que j'avais accès à la base de données pour lire le référentiel que je voulais, mais git clone échouait.

Effacer ~/.ssh/known_hosts, générer une nouvelle clé via ssh-keygen, ajouter cette nouvelle clé à bitbucket et réessayer, corrige-le pour moi.

5
sarink

Je voudrais insister de nouveau sur les points suivants:

  • Vous avez peut-être ajouté la clé SSH à votre référentiel (par exemple, ExampleRepo), mais c'est PAS l'endroit où la clé SSH va.
  • Il est destiné à entrer dans VOTRE PROFIL. Ceci est le petit avatar dans le coin inférieur gauche de l'écran. Ici, vous trouverez un endroit différent à mettre vos clés SSH (sous Sécurité)> vous ajoutez alors la clé ici.
  • Si vous avez accidentellement mis votre clé SSH dans le référentiel (par opposition à votre compte), supprimez-en une dans le référentiel.

Il m'a fallu un bon bout de temps pour réaliser que même après avoir lu les réponses, cela ne cliquait pas.

4
David Liu

Récemment, j'ai rencontré le même problème. J'ai eu l'erreur suivante:

accès au référentiel refusé. L'accès via une clé de déploiement est en lecture seule.

Vous pouvez avoir deux types de clés SSH:

  1. Pour l'ensemble de votre compte qui fonctionnera pour tous les dépôts
  2. clé SSH par référentiel qui ne peut être utilisé que pour ce référentiel spécifique.

J'ai simplement retiré ma clé SSH de référentiel et ajouté une nouvelle clé SSH à mon compte, et cela a bien fonctionné.

J'espère que ça aide quelqu'un. À votre santé

3
Yoones Mehdian

Pas:

  1. Créer des clés SSH sur le serveur source

    ssh-keygen

  2. Cat et copy id_rsa.pub situés sous le répertoire ~./Ssh

  3. Accédez à Bitbucket, si vous avez déjà défini les clés d’accès pour le ou les référentiels, puis supprimez la ou les clés publiques existantes.
  4. Allez dans Avatar Bitbucket> Paramètres Bitbucket> Clés SSH (sous Sécurité, volet de gauche)> Cliquez sur "Ajouter des clés"> collez la clé publique.
  5. Vérifiez si cela fonctionne en exécutant la commande ci-dessous sur le serveur source

    git remote show Origin

  6. Pour récupérer et envoyer depuis le serveur source, si le protocole est "https", vous devez le changer en "git + ssh" en exécutant la commande ci-dessous.

    git remote set-url Origin git+ssh://<bitbucketaccount>@bitbucket.org/<accountname>/repo.git

  7. Vérifiez si vous pouvez faire le Push to the repo.

Terminé!

2
rahul darga

Commencez par choisir ou créer la clé que vous souhaitez utiliser pour transmettre à Bitbucket. Disons que sa clé publique est à ~/.ssh/bitbucket.pub

  • Ajoutez votre clé publique à Bitbucket en vous connectant et en accédant à votre profil public, à vos paramètres, à ssh-key, à ajouter une clé.
  • Configurez ssh pour utiliser cette clé lors de la communication avec Bitbucket. Par exemple. sous Linux, ajoutez à ~/.ssh/config:
    Host bitbucket.org
    IdentityFile ~/.ssh/bitbucket
2
Ivan Ogai

Processus en deux étapes pour pouvoir tirer
Étape 1: Générez la clé ssh (publique et privée) sur mac

Étape 2: Mettez la clé privée dans mac et la clé publique dans le site Web de git

Les étapes détaillées ci-dessous sont destinées aux utilisateurs de Mac.

Étape 1: Génération de clés

  1. (assurez-vous que git est installé) https://git-scm.com/download/mac
  2. terminal ouvert et tapez ssh-keygen cela vous demandera d'entrer l'emplacement de stockage pour la clé, vous pouvez taper /Users/[machinename]/.ssh/[keyname]
  3. Ensuite, il vous demandera la phrase secrète. Vous pouvez le laisser vide en appuyant sur Entrée ou entrer un mot-clé à saisir de nouveau à l'invite suivante.
  4. Cela aura créé deux clés pour vous, privées et publiques, avec les noms [keyname] et [keyname] .pub.

Étape 2: transmission des clés aux emplacements appropriés [comptes mac et distants, tels que Github, bitbucket, gitlab, etc.]

  1. Tapez ssh-add -K ~/.ssh/[keyname] dans le terminal pour ajouter votre clé privée au Mac
  2. Tapez pbcopy < ~/.ssh/[keyname].pub pour copier la clé publique dans le presse-papier
  3. Ouvrez les paramètres du compte sur votre site Web git respectif et allez sur Ajouter une clé, puis collez la clé publique copiée ci-dessus.

Fait, maintenant vous pouvez pousser tirer.

1

J'ai eu le même problème que Kabir Sarin avait. La solution consistait à cloner le référentiel via SSH au lieu d'utiliser l'URL https. C'est donc ce qui m'a aidé, et j'espère que d'autres:

    git clone [email protected]:{accountName}/{repoName}.git
1
Lippai Zoltan

Tout ce dont vous avez besoin - ajoutez une autre clé et utilisez-la.

Comme j'ai trouvé la première clé - toujours clé de déploiement.

0
Victor Perov

Parfois, cela ne fonctionne pas car vous définissez manuellement une autre clé pour bitbucket dans ~/.ssh/config.

0
sean