リポジトリへのアクセスが拒否されました。展開キーを介したアクセスは読み取り専用です


302

herokuから私のリポジトリを正常に複製し、別のリモートを追加した後

1/ git clone git@heroku.com:[APP].git
2/ git remote add bitbucket ssh://git@bitbucket.org/[ACCOUNT]/[REPO].git
3/ git push bitbucket master

行(3)を実行した後、またはSourceTreeを使用した後もこのエラーが発生します

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

まず、このメッセージが実際にどういう意味かわかりません。そしてそれは残念だ。

私はsshキーペアを作成し、herokuに追加しました:

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

また、BitBucketのデプロイメントキーセクションにキーを追加しました。しかし、私は何かを逃しているに違いありません。この質問は怠惰から抜け出すものではありません。私はBitBucketsガイドを含むさまざまなドキュメントを読んでいます。しかし、それでもこの問題を回避することはできません。

この投稿は関連していますHeroku gitリポジトリをbitbuketにインポートできますか?そしてどうやって?

その他の事実:

ssh -T hg@bitbucket.org
conq: authenticated via a deploy key.

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


$ ssh -v git@bitbucket.org
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 no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: Sending environment.
debug1: Sending env LC_CTYPE = UTF-8
PTY allocation request failed on channel 0

すべて問題ないようです。


1
展開キーの代わりにSSHキーを追加するとうまく
いき

質問と回答の両方に投票することを忘れないでください。乾杯!!
zabumba 2016

回答:


720

私の最初の混乱は、BitBucketでSSHキーをどこに設定するかということでした。

私はBitBucketを初めて使用し、読み取りアクセスのみを提供するデプロイメントキーを設定していました。

したがってrsa pub keyBitBucketアカウント設定でを設定していることを確認してください。

BitBucketアバターをクリックして、[ Bitbucket設定アカウントを管理)。そこでSSHキーを設定することができます。

単に展開キーを削除しただけで、今は必要ありません。そしてそれはうまくいった

ここに画像の説明を入力してください


48
答えてくれてありがとう。これは、私が欠けていたものとまったく同じです。SSHキーの代わりに展開キーを追加しました。

27
はい!お返事ありがとうございます。アトラシアンは、ドキュメントでそれをより明確にする必要があります。
Ralph David Abernathy 2014

14
はい、sshキーメニューはBitbucketでよく隠されています!
jonprasetyo 2014年

3
大変助かります!慈悲Joelmaranhao!
kmria 2014年

6
答えが見つかるまで30分間これに苦労しました。ありがとうございました
micgeronimo

64

これで、SSHオプションはセキュリティ設定の下にあります

アバターをクリックします-> Bitbucket Settings-> SSH Key-> Add Key

公開鍵を貼り付けます


10
ありがとうございました。私のケースを説明したいだけです。Bitbucketアカウントキーではなくリポジトリ設定に公開キーを追加しました。だから私はそれを機能させるために、リポジトリでキーを削除し、プロファイル設定に追加しました。
リュベト2017年


13

展開キーは読み取り専用です。書き込みアクセスを有効にするには、次のことを行う必要があります。

  • このデプロイメントキーをリポジトリ設定から削除します。とにかく、このキーを使用してこのリポジトリに書き込むことはできません。

  • 「アバター->設定-> SSHキー」に移動し、同じキーを追加します

  • ブランチを削除するためにプッシュしてみてください

以前はリポジトリに書き込むことができましたが、これはデプロイキーで書き込むことができなくなったBitBucketの変更です。


長い間髪を引っ張った後、これは私のために働いたおかげで
Umar Adil '29

10

「展開キー」は読み取り専用アクセス専用です。以下は、これを処理する良い方法です。

  • SSHキーを作成してbitbucketに追加します(ユーザーアバター-> Bitbucket設定-> SSHキー)
  • 〜/ .ssh / known_hosts
  • ssh-add -D(SSHエージェントにロードされたキーを削除)
  • ssh-add〜/ .ssh / your_private_key_for_bitbucket
  • ssh git@bitbucket.org -Tv(キーがbitbucketへの接続に使用されていることを確認してください)
  • git push 'リモート名' 'ブランチ名'

9

[アカウントのSSHキーの管理]で同じキーを追加する場合は、最初に展開キーを削除する必要があります。


3
展開キーは私を与えるの削除Someone has already registered this as a deploy key.
ダン・klasson

3
(完全なBBアカウントの場合のように)BITBUCKET SETTINGSの下にshh公開鍵を追加する必要があることを明確にしてください。個別のリポジトリ設定の下では繰り返しません。リポジトリ設定の下にキーを追加すると、これらのエラーが発生します。
ネイトユニ

8

TLDR:ssh-add〜/ .ssh / yourkey

私はこの問題を解決しました。

そして、他の答えはどれも役に立たなかった。

./ssh/configにはすべての適切なものが含まれており、以前のリポジトリも正常に機能していました(同じbitbucketアカウント、同じキー)。次に、deploy_keyを生成し、その後、新しいリポジトリを作成しました。

その後、新しいリポジトリを複製できませんでした。

どのように/なぜsshエージェントがこれを台無しにしていたのか知​​っていればいいのですが、キーを追加すると解決しました。つまり、bitbucket管理者ではなく、ローカルのUbuntuにキーを追加します。コマンドはちょうどです

    ~/.ssh$ ssh-add myregualrkey

これが誰かを助けることを願っています。


優れた。これはまさに私が探していたものでした。
jpaljasma 2015年

3
あなたが何をしたか分かりません。
2016年

5

これがまさに私が望んでいた展開キーを使用しようとしたときに起こりました。

私は経由ssh -T git@bitbucket.orgで接続することができ、それは私が望んでいたリポジトリを読むためのアクセス権を持っていることを教えてくれましたgit cloneが、失敗しました。

をクリアし~/.ssh/known_hosts、を介して新しいキーを生成し、ssh-keygenその新しいキーをbitbucketに追加して、再試行すると修正されました。


4

以下を再度強調したいと思います。

  • SSHキーをリポジトリに追加した可能性がありますが(例:ExampleRepo)、これはSSHキーの場所ではありません
  • それはあなたのプロフィールに行くことを意図しています。これは、画面の左下隅にある小さなアバターです。ここでは、別のものを見つけますは、SSHキーを配置場所([セキュリティ]の下)を代わりにここにキーを追加します。
  • (アカウントではなく)誤ってSSHキーをリポジトリに入れた場合は、リポジトリから削除してください。

ここで答えを読んだ後でも、何とかしてそれがクリックしなかったことを実感するために年齢を取りました。


3

まず、Bitbucketへのプッシュに使用するキーを選択または作成します。その公開鍵が次の場所にあるとしましょう~/.ssh/bitbucket.pub

  • ログインし、公開プロファイル、設定、ssh-key、追加キーに移動して、公開鍵をBitbucketに追加します。
  • Bitbucketと通信するときにそのキーを使用するようにsshを構成します。たとえば、Linuxのadd ~/.ssh/config
    Host bitbucket.org
    IdentityFile ~/.ssh/bitbucket

2

最近、同じ問題に直面しました。次のエラーが発生しました:

リポジトリへのアクセスが拒否されました。展開キーを介したアクセスは読み取り専用です。

2種類のSSHキーを使用できます。

  1. すべてのリポジトリで機能するアカウント全体
  2. 特定のリポジトリでのみ使用できるリポジトリごとのSSHキー

リポジトリのSSHキーを削除し、アカウントに新しいSSHキーを追加するだけで、問題なく動作しました。

誰かのお役に立てば幸いです。乾杯


1

カビールサリンと同じ問題がありました。解決策は、https URLを使用する代わりに、SSH経由でリポジトリを複製することでした。これが私と、うまくいけば他の人を助けたものです:

    git clone git@bitbucket.org:{accountName}/{repoName}.git

1

手順:

  1. ソースサーバーでSSHキーを作成する

    ssh-keygen

  2. 〜。/ sshディレクトリの下にあるcatおよびcopy id_rsa.pub

  3. Bitbucketに移動します。すでにリポジトリのアクセスキーを設定している場合は、既存の公開キーを削除します
  4. [Bitbucketアバター]> [Bitbucket設定]> [SSHキー]([セキュリティ]の左側のペイン)> [キーの追加]をクリックして、公開キーを貼り付けます。
  5. ソースサーバーで以下のコマンドを実行して、機能するかどうかを確認します

    git remote show origin

  6. ソースサーバーからのフェッチとプッシュの場合、プロトコルが「https」の場合、以下のコマンドを実行して、プロトコルを「git + ssh」に変更する必要があります。

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

  7. リポジトリにpushできるかどうかを確認します。

できた!


正しい答えがすでに3〜4回与えられているポイントは何ですか?まだ答えがない質問に答えようとしないのはなぜですか。
zabumba 2018

1
親切なアドバイスありがとうございます。
rahul darga

0

必要なものはすべて-別のキーを追加して使用します。

最初のキーを見つけたので-常に展開キー。


0

でbitbucketの別のキーを手動で設定したために機能しない場合があります~/.ssh/config


0

プッシュプルを可能にするための2つのステッププロセス
ステップ1:MacでSSHキー(パブリックおよびプライベート)を生成するステップ

2:プライベートキーをMacに、パブリックキーをgit Webサイトに置く

以下の詳細なステップはMacユーザー向けです。

ステップ1:キーを生成する

  1. (gitがインストールされていることを確認してください)https://git-scm.com/download/mac
  2. ターミナルを開いてssh-keygen入力すると、キーの保存場所を入力するよう求められます。/Users/[machinename]/.ssh/[keyname]
  3. 次にパスフレーズを要求します。Enterキーを押して空白にするか、次のプロンプトでもう一度入力するキーワードを入力します
  4. これにより、[keyname]および[keyname] .pubという名前の、プライベートとパブリックの2つの鍵が作成されます。

ステップ2:適切な場所にキーをプッシュする[macおよびリモートアカウント、つまりGithub、bitbucket、gitlabなど]

  1. タイプ ssh-add -K ~/.ssh/[keyname] Macにあなたの秘密鍵を付加するために、末端に
  2. 入力pbcopy < ~/.ssh/[keyname].pubして公開鍵をクリップボードにコピーします
  3. それぞれのgit Webサイトでアカウント設定を開き、キーを追加し、上記でコピーした公開キーを貼り付けます

完了しました。これでプッシュプルができます。


反対票を投じた人たちに、私は一日中苦労していて、私の問題を直接解決する答えを見つけることができませんでした。とにかく
Akshay Vijay Jain

-1

これは、特定のBitBucketチーム/ユーザーからすべてのリポジトリを複製するための完全なコードです

# -*- coding: utf-8 -*-
"""

    ~~~~~~~~~~~~

    Little script to clone all repos from a given BitBucket team/user.

    :author: https://thepythoncoding.blogspot.com/2019/06/python-script-to-clone-all-repositories.html
    :copyright: (c) 2019
"""

from git import Repo
from requests.auth import HTTPBasicAuth

import argparse
import json
import os
import requests
import sys

def get_repos(username, password, team):
    bitbucket_api_root = 'https://api.bitbucket.org/1.0/users/'
    raw_request = requests.get(bitbucket_api_root + team, auth=HTTPBasicAuth(username, password))
    dict_request = json.loads(raw_request.content.decode('utf-8'))
    repos = dict_request['repositories']

    return repos

def clone_all(repos):
    i = 1
    success_clone = 0
    for repo in repos:
        name = repo['name']
        clone_path = os.path.abspath(os.path.join(full_path, name))

        if os.path.exists(clone_path):
            print('Skipping repo {} of {} because path {} exists'.format(i, len(repos), clone_path))
        else:
            # Folder name should be the repo's name
            print('Cloning repo {} of {}. Repo name: {}'.format(i, len(repos), name))
            try:
                git_repo_loc = 'git@bitbucket.org:{}/{}.git'.format(team, name)
                Repo.clone_from(git_repo_loc, clone_path)
                print('Cloning complete for repo {}'.format(name))
                success_clone = success_clone + 1
            except Exception as e:
                print('Unable to clone repo {}. Reason: {} (exit code {})'.format(name, e.stderr, e.status))
        i = i + 1

    print('Successfully cloned {} out of {} repos'.format(success_clone, len(repos)))

parser = argparse.ArgumentParser(description='clooney - clone all repos from a given BitBucket team/user')

parser.add_argument('-f',
                    '--full-path',
                    dest='full_path',
                    required=False,
                    help='Full path of directory which will hold the cloned repos')

parser.add_argument('-u',
                    '--username',
                    dest="username",
                    required=True,
                    help='Bitbucket username')

parser.add_argument('-p',
                    '--password',
                    dest="password",
                    required=False,
                    help='Bitbucket password')

parser.add_argument('-t',
                    '--team',
                    dest="team",
                    required=False,
                    help='The target team/user')

parser.set_defaults(full_path='')
parser.set_defaults(password='')
parser.set_defaults(team='')

args = parser.parse_args()

username = args.username
password = args.password
full_path = args.full_path
team = args.team

if not team:
    team = username

if __name__ == '__main__':
    try:
        print('Fetching repos...')
        repos = get_repos(username, password, team)
        print('Done: {} repos fetched'.format(len(repos)))
    except Exception as e:
        print('FATAL: Could not get repos: ({}). Terminating script.'.format(e))
        sys.exit(1)

    clone_all(repos)

詳細:https : //thepythoncoding.blogspot.com/2019/06/python-script-to-clone-all-repositories.html


-3

このエラーの場合:conq:リポジトリアクセスが拒否されました。展開キーを介したアクセスは読み取り専用です。

鍵の名前、例を変更します

cd /home/try/.ssh/
mv try id_rsa
mv try.pub id_rsa.pub

私はbitbucketで自分のキーを操作します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.