Havuz erişimi reddedildi. bir dağıtım anahtarı ile erişim salt okunur


302

Repomumu heroku'dan başarıyla klonladıktan ve başka bir uzaktan kumanda ekledikten sonra

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

Satır (3) çalıştırdıktan veya SourceTree kullandıktan sonra hala bu hatayı alıyorum

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

İlk olarak bu mesajın pratikte ne anlama geldiğini anlamıyorum. Ve bu utanç verici.

Ssh anahtar çifti oluşturdum ve heroku'ya ekledim:

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

Anahtarımı BitBucket'teki dağıtım anahtarları bölümüne de ekledim. Ama bir şey eksik olmalıyım. Bu soru tembellikten uzak değil, BitBuckets rehberleri de dahil olmak üzere çeşitli belgeleri okuyorum. Ama yine de bu sorunu çözmüyor.

Bu yazı, heroku git repo'umu bitbuket'e aktarabilir miyim? ve nasıl?

İLAVE GERÇEKLER:

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

Her ţey yolunda gibi görünüyor.


1
Dağıtım anahtarı yerine bir SSH anahtarı eklemek benim için işe yaradı
Hari Das

Soru ve cevapları oylamayı unutmayın. Alkış !!
zabumba

Yanıtlar:


720

Benim tarafımdaki ilk karışıklık, BitBucket'te SSH Anahtarlarının tam olarak nerede ayarlanacağıydı .

BitBucket'te yeniyim ve yalnızca okuma erişimi sağlayan bir Dağıtım Anahtarı ayarlıyordum .

Bu nedenle rsa pub key, BitBucket Hesap Ayarlarınızda ayarlarınızı yaptığınızdan emin olun .

BitBucket avatarınızı tıklayın ve Bitbucket Ayarları'nı (Hesabı yönet). Burada SSH Anahtarlarını ayarlayabilirsiniz .

Dağıtım Anahtarını sildim, şimdilik ihtiyacım yok. Ve işe yaradı

resim açıklamasını buraya girin


48
Cevap için teşekkürler. Bu benim eksik olduğum şeyle tamamen aynı. SSH Anahtarı yerine bir dağıtım anahtarı ekledim.

27
Evet! Cevabınız için teşekkür ederim. Atlassian bunu belgesellerinde gerçekten daha net hale getirmelidir.
Ralph David Abernathy

14
Evet bu ssh tuşu menüsü Bitbucket'te iyi gizlenmiş!
jonprasetyo

3
Harika yardım! Mercy Joelmaranhao!
kmria

6
Yanıtınızı bulmadan önce 30 dakika boyunca bununla mücadele
ettik

64

Şimdi SSH seçeneği güvenlik ayarlarının altında

Avatarınızı tıklayın -> Bitbucket Ayarları -> SSH Anahtarı -> Anahtar Ekle

Genel anahtarınızı yapıştırın


10
Teşekkür ederim. Sadece durumumu anlatmak istiyorum. Ortak anahtarımı Bitbucket hesap anahtarlarım yerine depo ayarlarına ekledim. Bu yüzden anahtarı depoda sildim ve çalışmasını sağlamak için profil ayarlarıma ekledim.
17'de lyubeto


13

Dağıtım anahtarları salt okunurdur. Yazma erişimini etkinleştirmek için şunları yapmanız gerekir:

  • Bu dağıtım anahtarını depo ayarlarınızdan kaldırın. Yine de bu anahtarla bu repoya yazamazsınız.

  • "Avatar -> Ayarlar -> SSH Anahtarları" na gidin ve aynı anahtarı ekleyin

  • Şimdi şubeyi kaldırmak için itmeye çalışın

Daha önce depolara yazabildiniz, ancak bu, BitBucket'te artık dağıtım anahtarıyla yazamayacağınız bir değişiklik.


Teşekkürler bu uzun süre saçlarını çektikten sonra benim için çalıştı
Umar Adil

10

'Dağıtım Anahtarı' yalnızca Salt Okunur erişim içindir. Aşağıdakiler bunun üzerinde çalışmak için iyi bir yoldur.

  • SSH anahtarı oluşturun ve bitbucket'e ekleyin (Kullanıcı Avatarı>> Bitbucket Ayarı-> SSH anahtarları)
  • ~ / .Ssh / known_hosts
  • ssh-add -D (SSH aracısına yüklenen anahtarları kaldır)
  • ssh-add ~ / .ssh / your_private_key_for_bitbucket
  • ssh git@bitbucket.org -Tv (Anahtarınızın bitbucket'e bağlanmak için alıştığını doğrulayın)
  • git push 'uzak ad' 'dal adı'

9

Hesap SSH Anahtarını Yönet altında aynı anahtarı ekleyecekseniz, önce dağıtım anahtarını silmeniz gerekir.


3
Someone has already registered this as a deploy key.
Konuşlandırma

3
Şşş genel anahtarını BITBUCKET SETTINGS (tam BB hesabı için olduğu gibi) altına eklememeniz gerektiğinden emin olun NOT ve ayrı Repo Ayarları altında DEĞİL tekrar ediyorum. Repo ayarlarının altına bir anahtar eklediyseniz, bu nedenle bu hataları alıyorsunuz.
Nate Uni

8

TLDR: ssh-add ~ / .ssh / anahtarınız

Ben sadece bu problem üzerinde çalıştım.

Ve diğer cevapların hiçbiri işe yaramadı.

Tüm doğru şeyleri içeren bir ./ssh/config dosyam var, ayrıca daha önceki bir depo iyi çalışıyor (aynı bitbucket hesabı, aynı anahtar). Sonra bir deploy_key oluşturdum ve bundan sonra yeni bir depo oluşturdum.

Bundan sonra yeni repo klonlanamadı.

Keşke ssh ajanının bunu nasıl / neden bozduğunu bilsem, ama anahtarı ekleyerek çözdüm. Anahtarımı bitbucket yöneticisine değil, yerel Ubuntu'ma eklemek demek. Komut sadece

    ~/.ssh$ ssh-add myregualrkey

Umarım bu birine yardımcı olur.


Mükemmel. Tam da aradığım şey buydu.
jpaljasma

3
Ne yaptığını anlamıyorum.
kev

5

Bir dağıtım anahtarı kullanmaya çalışırken bunu yaptım çünkü tam olarak istediğim buydu.

Üzerinden bağlantı kurabilirdim ssh -T git@bitbucket.orgve istediğim havuzu okuma erişimim olduğunu söylerdi, amagit clone başarısız olur.

Temizlenmek ~/.ssh/known_hosts, yeni bir anahtar oluşturmak ssh-keygen, o yeni anahtarı bitbucket'e eklemek ve yeniden denemek benim için düzeltti.


4

Aşağıdakileri yeniden vurgulamak istiyorum:

  • Sen SSH anahtarını eklemiş olabilir sizin depo (örn ExampleRepo), ama bu SSH anahtar nereye gittiğini DEĞİL .
  • PROFİLİNİZE girmeniz amaçlanmıştır . Bu, ekranın sol alt köşesindeki küçük avatar. Burada, bir farklı bir SSH Anahtarlarınızı koymak için yer (Güvenlik altında)> ardından anahtarı buraya ekleyin.
  • SSH anahtarınızı yanlışlıkla depoya koyarsanız (hesabınızın aksine), depodaki anahtarınızı silin.

Fark etmem için yaşlarımı aldı, bir şekilde burada cevapları okuduktan sonra bile tıklamadı.


3

Önce Bitbucket'e göndermek için kullanmak istediğiniz anahtarı seçin veya oluşturun. Diyelim ki genel anahtarı~/.ssh/bitbucket.pub

  • Genel anahtarınızı Bitbucket'e giriş yapıp genel profilinize, ayarlarınıza, ssh-key, add key'e giderek ekleyin.
  • Ssh'yi Bitbucket ile iletişim kurarken bu anahtarı kullanacak şekilde yapılandırın. Örneğin Linux'ta şunlara ekleyin ~/.ssh/config:
    Host bitbucket.org
    IdentityFile ~/.ssh/bitbucket

2

Son zamanlarda aynı sorunla karşılaştım. Aşağıdaki hatayı aldım:

depo erişimi reddedildi. bir dağıtım anahtarı aracılığıyla erişim salt okunurdur.

İki çeşit SSH anahtarınız olabilir:

  1. Tüm depolarınız için çalışacak hesabınızın tamamı için
  2. Yalnızca söz konusu depo için kullanılabilen her depo SSH anahtarı başına .

Depo SSH anahtarımı kaldırdım ve hesabıma yeni bir SSH anahtarı ekledim ve iyi çalıştı.

Umarım birine yardımcı olur. Şerefe


1

Kabir Sarin ile aynı sorunu yaşadım. Çözüm, https URL'sini kullanmak yerine repoyu SSH aracılığıyla klonlamaktı. işte bana yardımcı olan şey bu ve umarım diğerleri:

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

1

Adımlar:

  1. Kaynak sunucuda ssh anahtarları oluşturma

    ssh-keygen

  2. ~. / Ssh dizininin altında bulunan kedi ve kopya id_rsa.pub

  3. Bitbucket'e gidin, depolar için erişim anahtarlarını önceden ayarladıysanız, mevcut ortak anahtarları silin
  4. Bitbucket avatarı> Bitbucket ayarları> SSH Anahtarları'na gidin (Güvenlik altında, soldaki bölmede)> 'Anahtar Ekle'ye tıklayın> ortak anahtarı yapıştırın.
  5. Kaynak sunucuda aşağıdaki komutu çalıştırarak çalışıp çalışmadığını kontrol edin

    git remote show origin

  6. Kaynak sunucudan getirme ve gönderme için, protokol 'https' ise, aşağıdaki komutu çalıştırarak protokolü 'git + ssh' olarak değiştirmeniz gerekir.

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

  7. Repoya itme yapıp yapamayacağınızı kontrol edin.

Bitti!


3 ya da 4 kez doğru cevabın verildiği nokta nedir? neden hala cevabı olmayan bir soruya cevap vermeye çalışmıyorsunuz?
zabumba

1
Nazik tavsiye için teşekkürler.
rahul darga

0

Tek ihtiyacınız olan - başka bir anahtar ekleyin ve kullanın.

İlk anahtarı bulduğum gibi - Daima Dağıtım Anahtarı.


0

Bazen çalışmaz, çünkü bitbucket için manuel olarak başka bir anahtar ayarladınız ~/.ssh/config.


0

İki aşamalı bir süreçtir çekme itme edebilmek için
Adım 1: mac üzerinde ssh anahtarı (kamu ve özel) üret

git sitesinde mac içinde özel anahtarı ve ortak anahtarını koyun: Adım 2

ayrıntılı adımlar mac kullanıcıları için aşağıda

1. Adım: Anahtar oluşturma

  1. (git'in yüklü olduğundan emin olun) https://git-scm.com/download/mac
  2. terminali açın ve ssh-keygenbunu anahtar için depolama yeri girmenizi isteyecek yazın, yazabilirsiniz/Users/[machinename]/.ssh/[keyname]
  3. Daha sonra parola isteyecektir, enter tuşuna basarak boş bırakabilir veya bir sonraki istemde tekrar girilecek bazı anahtar kelimeleri girebilirsiniz
  4. Bu, sizin için [anahtar adı] ve [anahtar adı] .pub adıyla özel ve genel olarak iki anahtar oluşturmuş olacaktır.

2.Adım: Anahtarları uygun yerlere gönderme [mac ve uzak hesaplar, örn. Github, bitbucket, gitlab vb]

  1. tip ssh-add -K ~/.ssh/[keyname] mac için özel anahtarı eklemek için, terminal içinde
  2. Tip pbcopy < ~/.ssh/[keyname].pubpanoya kamu anahtarı kopyalamak için
  3. İlgili git web sitenizde hesap ayarlarını açın ve anahtar eklemeye gidin, yukarıda kopyalanan genel anahtarı yapıştırın

Bitti, şimdi çekmeyi itebilirsin.


Aşağı düşmüş olanlara, bütün gün mücadele ediyordum ve sorunumu doğrudan çözen herhangi bir cevap bulamadım ve burada belirtilen adımlar doğrudan onları çözer ve geneldir. Neyse
Akshay Vijay Jain

-1

verilen bir BitBucket ekibinden / kullanıcısından tüm depoları klonlamak için tam kod

# -*- 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)

Daha fazla bilgi: https://thepythoncoding.blogspot.com/2019/06/python-script-to-clone-all-repositories.html


-3

bu hata için: conq: depo erişimi reddedildi. bir dağıtım anahtarı aracılığıyla erişim salt okunurdur.

Anahtarımın adını değiştirdim, örnek

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

Bitbucket üzerinde kendi anahtarımda çalışıyorum

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.