it-swarm.com.de

Repository-Zugriff verweigert. Der Zugriff über einen Bereitstellungsschlüssel ist schreibgeschützt

Nachdem ich mein Repo erfolgreich von Heroku geklont und eine weitere Fernbedienung hinzugefügt habe

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

Ich erhalte immer noch diesen Fehler, nachdem ich line (3) ausgeführt oder SourceTree verwendet habe

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

Zunächst verstehe ich nicht, was diese Botschaft in der Praxis bedeutet. Und das ist eine Schande.

Ich habe ein SSH-Schlüsselpaar erstellt und zu Heroku hinzugefügt:

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

Ich habe meinen Schlüssel auch im Abschnitt Bereitstellungsschlüssel in BitBucket hinzugefügt. Aber ich muss etwas vermissen. Diese Frage ist nicht aus Faulheit, ich habe verschiedene Dokumente gelesen, einschließlich BitBuckets-Anleitungen. Aber es kommt immer noch nicht um dieses Problem herum.

Dieser Beitrag bezieht sich auf Kann ich mein Heroku Git Repo in BitBuket importieren? Und wie?

ZUSÄTZLICHE FAKTEN:

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

Sieht aus wie alles in Ordnung ist.

298
zabumba

Erste Verwirrung auf meiner Seite war, wo genau SSH-Schlüssel in BitBucket zu setzen sind.

Ich bin neu in BitBucket und habe einen Deployment Key gesetzt, der nur Lesezugriff ermöglicht.

Stellen Sie also sicher, dass Sie Ihr rsa pub key in Ihren BitBucket-Kontoeinstellungen .

Klicken Sie auf Ihren BitBucket-Avatar und wählen Sie Bitbucket-Einstellungen (Konto verwalten). Dort können Sie SSH-Schlüssel setzen.

Ich habe einfach den Deployment Key gelöscht, brauche aber noch keinen. Und es hat funktioniert

enter image description here

710
zabumba

Jetzt befindet sich die SSH-Option unter den Sicherheitseinstellungen

Klicken Sie auf Avatar -> Bitbucket-Einstellungen -> SSH-Schlüssel -> Schlüssel hinzufügen

Fügen Sie Ihren öffentlichen Schlüssel ein

64
Sathish

sie müssen Ihren Schlüssel zu Ihrem Profil hinzufügen und [~ # ~] nicht [~ # ~] zu einem bestimmten Repository. Folgen Sie diesem: https://community.atlassian.com/t5/Bitbucket-questions/How-do-I-add-an-SSH-key-as-opposed-to-a-deployment-keys/qaq -p/41337

17
Tomer

Bereitstellungsschlüssel sind schreibgeschützt. Um den Schreibzugriff zu aktivieren, müssen Sie:

  • Entfernen Sie diesen Bereitstellungsschlüssel aus Ihren Repository-Einstellungen. Mit diesem Schlüssel können Sie ohnehin nicht in dieses Repo schreiben.

  • Gehen Sie zu "Avatar -> Einstellungen -> SSH-Schlüssel" und fügen Sie denselben Schlüssel hinzu

  • Versuchen Sie nun, den Zweig durch Drücken zu entfernen

Sie konnten zuvor in Repositorys schreiben, aber dies ist eine Änderung in BitBucket, bei der Sie nicht mehr mit Bereitstellungsschlüssel schreiben können.

13
timhysniu

Der Bereitstellungsschlüssel ist nur für den schreibgeschützten Zugriff vorgesehen. Das Folgende ist ein guter Weg, um dies durchzuarbeiten.

  • Erstellen Sie einen SSH-Schlüssel und fügen Sie ihn zu bitbucket hinzu (Benutzer-Avatar -> Bitbucket-Einstellung -> SSH-Schlüssel).
  • ~/.ssh/known_hosts
  • ssh-add -D (Entfernen von Schlüsseln, die in den SSH-Agenten geladen wurden)
  • ssh-add ~/.ssh/your_private_key_for_bitbucket
  • ssh [email protected] -Tv (Überprüfen Sie, ob sich Ihr Schlüssel daran gewöhnt, sich mit bitbucket zu verbinden)
  • git Push 'Remote Name' 'Filialname'
10
Jerome Anthony

Sie müssen den Bereitstellungsschlüssel zuerst löschen, wenn Sie denselben Schlüssel unter SSH-Schlüssel für Konto verwalten hinzufügen möchten.

9
sent.ror

TLDR: ssh-add ~/.ssh/yourkey

Ich habe gerade dieses Problem durchgearbeitet.

Und keine der anderen Antworten half.

Ich hatte eine ./ssh/config mit den richtigen Sachen, auch ein früheres Repository funktionierte gut (das gleiche Bitbucket-Konto, der gleiche Schlüssel). Dann habe ich einen deploy_key generiert und danach ein neues Repository erstellt.

Danach konnte das neue Repo nicht geklont werden.

Ich wünschte, ich wüsste, wie/warum der ssh-Agent dies vermasselte, aber das Hinzufügen des Schlüssels löste es. Ich meine, den Schlüssel in meinem lokalen Ubuntu hinzuzufügen, nicht in bitbucket admin. Der Befehl ist einfach

    ~/.ssh$ ssh-add myregualrkey

Hoffe das hilft jemandem.

8
Tjunkie

Das ist mir passiert, als ich versucht habe, einen Bereitstellungsschlüssel zu verwenden, weil ich genau das wollte.

Ich könnte eine Verbindung über ssh -T [email protected] und es würde mir sagen, dass ich Zugriff hatte, um das Repository zu lesen, das ich wollte, aber git clone würde versagen.

Aufräumen ~/.ssh/known_hosts, Erzeugen eines neuen Schlüssels über ssh-keygen, den neuen Schlüssel zu bitbucket hinzugefügt und erneut versucht, ihn für mich zu reparieren.

5
sarink

Ich möchte Folgendes noch einmal betonen:

  • Sie haben den SSH-Schlüssel möglicherweise zu Ihrem Repository hinzugefügt (z. B. ExampleRepo), aber dies ist NICHT, wohin der SSH-Schlüssel führt.
  • Es soll in gehen IHR PROFIL. Dies ist der kleine Avatar in der unteren linken Ecke des Bildschirms. Hier findest du einen anderen Ort Um Ihre SSH-Schlüssel zu speichern (unter Sicherheit)> fügen Sie stattdessen den Schlüssel hier hinzu.
  • Wenn Sie versehentlich Ihren SSH-Schlüssel im Repository abgelegt haben (im Gegensatz zu Ihrem Konto), löschen Sie den im Repository.

Es dauerte eine Ewigkeit, bis mir klar wurde, dass es irgendwie nicht klappte, selbst nachdem ich die Antworten hier gelesen hatte.

4
David Liu

Vor kurzem stand ich vor dem gleichen Problem. Ich habe folgende Fehlermeldung erhalten:

Zugriff auf das Repository verweigert. Der Zugriff über einen Bereitstellungsschlüssel ist schreibgeschützt.

Sie können zwei Arten von SSH-Schlüsseln haben:

  1. Für Ihr gesamtes Konto welches für alle Repositories funktioniert
  2. Pro Repository-SSH-Schlüssel Kann nur für dieses bestimmte Repository verwendet werden.

Ich habe einfach meinen Repository-SSH-Schlüssel entfernt und meinem Konto einen neuen SSH-Schlüssel hinzugefügt, und es hat gut funktioniert.

Ich hoffe es hilft jemandem. Prost

3
Yoones Mehdian

Schritte:

  1. Erstellen Sie SSH-Schlüssel auf dem Quellserver

    ssh-keygen

  2. Cat und kopieren Sie id_rsa.pub im Verzeichnis ~./Ssh

  3. Gehen Sie zu Bitbucket, wenn Sie bereits die Zugriffsschlüssel für Repositorys festgelegt haben, und löschen Sie vorhandene öffentliche Schlüssel.
  4. Gehen Sie zu Bitbucket-Avatar> Bitbucket-Einstellungen> SSH-Schlüssel (unter Sicherheit, linker Bereich)> Klicken Sie auf 'Schlüssel hinzufügen'> fügen Sie den öffentlichen Schlüssel ein.
  5. Überprüfen Sie, ob dies funktioniert, indem Sie den folgenden Befehl auf dem Quellserver ausführen

    git remote show Origin

  6. Wenn für Fetch und Push vom Quellserver das Protokoll "https" lautet, müssen Sie es in "git + ssh" ändern, indem Sie den folgenden Befehl ausführen

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

  7. Überprüfen Sie, ob Sie Push to the Repo tun können.

Getan!

2
rahul darga

Wählen oder erstellen Sie zuerst den Schlüssel, den Sie zum Drücken auf Bitbucket verwenden möchten. Angenommen, sein öffentlicher Schlüssel ist bei ~/.ssh/bitbucket.pub

  • Fügen Sie Ihren öffentlichen Schlüssel zu Bitbucket hinzu, indem Sie sich anmelden und zu Ihrem öffentlichen Profil, Ihren Einstellungen, Ihrem SSH-Schlüssel und Ihrem Schlüssel wechseln.
  • Konfigurieren Sie ssh für die Verwendung dieses Schlüssels bei der Kommunikation mit Bitbucket. Z.B. in Linux zu ~/.ssh/config hinzufügen:
    Host bitbucket.org
    IdentityFile ~/.ssh/bitbucket
2
Ivan Ogai

Zweistufiger Prozess, um Push-Pull zu können
Schritt 1: Generieren Sie den SSH-Schlüssel (öffentlich und privat) auf dem Mac

Schritt 2: Gib den privaten Schlüssel in den Mac und den öffentlichen Schlüssel in die Git-Website ein

Die folgenden detaillierten Schritte gelten für Mac-Benutzer

Schritt 1: Schlüssel generieren

  1. (Stellen Sie sicher, dass Sie git installiert haben) https://git-scm.com/download/mac
  2. öffnen Sie das Terminal und geben Sie ssh-keygen ein. Dadurch werden Sie aufgefordert, den Speicherort für den Schlüssel einzugeben. Sie können /Users/[machinename]/.ssh/[keyname] eingeben.
  3. Als nächstes wird nach einer Passphrase gefragt. Sie können diese entweder leer lassen, indem Sie die Eingabetaste drücken, oder ein Schlüsselwort eingeben, das bei der nächsten Eingabeaufforderung erneut eingegeben werden soll
  4. Dadurch wurden zwei private und öffentliche Schlüssel mit den Namen [Schlüsselname] und [Schlüsselname] .pub erstellt

Schritt 2: Drücken der Tasten an den entsprechenden Speicherort [Mac und Remote-Konten, z. B. Github, Bitbucket, Gitlab usw.]

  1. Geben Sie im Terminal ssh-add -K ~/.ssh/[keyname] Ein, um Ihren privaten Schlüssel zum Mac hinzuzufügen
  2. Geben Sie pbcopy < ~/.ssh/[keyname].pub Ein, um den öffentlichen Schlüssel in die Zwischenablage zu kopieren
  3. Öffnen Sie die Kontoeinstellungen auf Ihrer jeweiligen Git-Website und gehen Sie zum Hinzufügen eines Schlüssels. Fügen Sie dort den oben kopierten öffentlichen Schlüssel ein

Fertig, jetzt können Sie Push-Pull.

1

Ich hatte das gleiche Problem wie Kabir Sarin. Die Lösung bestand darin, das Repo über SSH zu klonen, anstatt die https-URL zu verwenden. Das hat mir geholfen, und hoffentlich auch anderen:

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

Alles was Sie brauchen - fügen Sie einen weiteren Schlüssel hinzu und verwenden Sie ihn.

Wie ich den ersten Schlüssel gefunden habe - immer den Bereitstellungsschlüssel.

0
Victor Perov

Manchmal funktioniert es nicht, weil Sie in ~/.ssh/config Manuell einen anderen Schlüssel für bitbucket festgelegt haben.

0
sean