Akses repositori ditolak. akses melalui kunci penyebaran hanya baca

302

Setelah berhasil mengkloning repo saya dari heroku dan menambahkan remote lain

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

Saya masih mendapatkan kesalahan ini setelah menjalankan baris (3) atau menggunakan SourceTree

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

Pertama, saya tidak mengerti apa arti pesan ini dalam praktiknya. Dan itu memalukan.

Saya membuat pasangan kunci ssh dan menambahkan ke heroku:

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

Saya juga menambahkan kunci saya di bagian kunci penempatan di BitBucket. Tapi aku pasti melewatkan sesuatu. Pertanyaan ini bukan karena malas, saya telah membaca berbagai dokumen termasuk panduan BitBuckets. Tapi itu masih tidak menyelesaikan masalah ini.

Posting ini terkait dengan Bisakah saya mengimpor repo heroku git saya ke bitbuket? dan bagaimana?

FAKTA TAMBAHAN:

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

Sepertinya semua baik-baik saja.

zabumba
sumber
1
Menambahkan kunci SSH alih-alih kunci Penempatan bekerja untuk saya
Hari Das
Ingatlah untuk memilih pertanyaan dan jawaban. Bersulang!!
zabumba

Jawaban:

720

Kebingungan pertama di pihak saya adalah tentang di mana tepatnya untuk mengatur SSH Keys di BitBucket.

Saya baru mengenal BitBucket dan saya sedang menetapkan Kunci Penerapan yang hanya memberikan akses baca .

Jadi pastikan Anda mengatur rsa pub keydi Pengaturan Akun BitBucket Anda .

Klik avatar BitBucket Anda dan pilih Pengaturan Bitbucket (Kelola akun). Di sana Anda akan dapat mengatur Kunci SSH .

Saya hanya menghapus Kunci Penempatan , saya tidak perlu untuk saat ini. Dan itu berhasil

masukkan deskripsi gambar di sini

zabumba
sumber
48
Terima kasih atas jawabannya. Ini persis sama dengan yang saya lewatkan. Saya menambahkan kunci penempatan bukan Kunci SSH.
27
Iya! Terima kasih atas jawaban Anda. Atlassian harus benar-benar membuatnya lebih jelas dalam dokumentasi mereka.
Ralph David Abernathy
14
Ya itu menu kunci ssh tersembunyi dengan baik di Bitbucket!
jonprasetyo
3
Sangat membantu! Rahmat Joelmaranhao!
kmria
6
Berjuang dengan ini selama 30 menit sebelum menemukan jawaban Anda, terima kasih banyak
micgeronimo
64

Sekarang opsi SSH berada di bawah pengaturan keamanan

Klik Avatar Anda -> Pengaturan Bitbucket -> Kunci SSH -> Tambahkan Kunci

Rekatkan kunci publik Anda

Sathish
sumber
10
Terima kasih. Saya hanya ingin menggambarkan kasus saya. Saya menambahkan kunci publik saya di pengaturan repositori daripada di kunci akun Bitbucket saya. Jadi saya menghapus kunci dalam repositori dan menambahkannya di pengaturan profil saya untuk membuatnya berfungsi.
lyubeto
13

Kunci penerapan hanya baca. Untuk mengaktifkan akses tulis, Anda perlu:

  • Hapus kunci penyebaran ini dari pengaturan repositori Anda. Anda tidak akan dapat menulis ke repo ini dengan kunci ini.

  • Pergi ke "Avatar -> Pengaturan -> Kunci SSH" dan tambahkan kunci yang sama

  • Sekarang coba tekan untuk menghapus cabang

Anda bisa menulis ke repositori sebelumnya tetapi ini adalah perubahan dalam BitBucket di mana Anda tidak lagi bisa menulis dengan menggunakan kunci deploy.

timhysniu
sumber
Terima kasih, ini berhasil untuk saya setelah lama mencabut rambut
Umar Adil
10

'Kunci Penempatan' hanya untuk akses Hanya Baca. Mengikuti adalah cara yang baik untuk mengatasi ini.

  • Buat dan kunci SSH dan tambahkan ke bitbucket (Avatar Pengguna -> Pengaturan Bitbucket-> kunci SSH)
  • ~ / .ssh / known_hosts
  • ssh-add -D (Hapus kunci yang dimuat ke agen SSH)
  • ssh-add ~ / .ssh / your_private_key_for_bitbucket
  • ssh [email protected] -Tv (Verifikasikan bahwa kunci Anda mulai terhubung ke bitbucket)
  • git push 'nama jauh' 'nama cabang'
Jerome Anthony
sumber
9

Anda harus menghapus kunci penempatan terlebih dahulu jika Anda ingin menambahkan kunci yang sama di bawah Kelola Kunci SSH Akun.

dikirim. teror
sumber
3
Menghapus kunci deploy memberi sayaSomeone has already registered this as a deploy key.
dan-klasson
3
Menjadi jelas bahwa Anda harus menambahkan kunci publik shh di bawah PENGATURAN BITBUCKET (seperti dalam untuk akun BB penuh) TIDAK dan saya ulangi TIDAK di bawah Pengaturan Repo individu. Jika Anda menambahkan kunci di bawah pengaturan repo itu sebabnya Anda mendapatkan kesalahan ini.
Nate Uni
8

TLDR: ssh-add ~ / .ssh / yourkey

Saya baru saja menyelesaikan masalah ini.

Dan tidak ada jawaban lain yang membantu.

Saya memang memiliki ./ssh/config dengan semua hal yang benar, juga repositori yang sebelumnya berfungsi dengan baik (akun bitbucket yang sama, kunci yang sama). Kemudian saya membuat deploy_key, dan setelah itu membuat repositori baru.

Setelah itu tidak bisa mengkloning repo baru.

Saya berharap saya tahu bagaimana / mengapa ssh agent mengacaukan ini, tetapi menambahkan kunci menyelesaikannya. Maksud saya menambahkan kunci di Ubuntu lokal saya, bukan di admin bitbucket. Perintah itu adil

    ~/.ssh$ ssh-add myregualrkey

Semoga ini bisa membantu seseorang.

Tjunkie
sumber
Luar biasa. Ini persis apa yang saya cari.
jpaljasma
3
Saya tidak mengerti apa yang Anda lakukan.
kev
5

Saya mengalami ini ketika saya mencoba menggunakan kunci penempatan karena itulah yang saya inginkan.

Saya dapat terhubung melalui ssh -T [email protected]dan itu akan memberitahu saya saya memiliki akses untuk membaca repositori yang saya inginkan, tetapi git cloneakan gagal.

Menghapus ~/.ssh/known_hosts, membuat kunci baru melalui ssh-keygen, menambahkan kunci baru itu ke bitbucket, dan mencoba memperbaikinya untuk saya.

sarung
sumber
4

Saya ingin menekankan kembali hal-hal berikut:

  • Anda mungkin telah menambahkan kunci SSH ke repositori Anda (misalnya ExampleRepo), tetapi ini BUKAN ke mana kunci SSH pergi .
  • Ini dimaksudkan untuk masuk ke PROFIL ANDA . Ini adalah avatar kecil di sudut kiri bawah layar. Di sini, Anda akan menemukan tempat yang berbeda untuk meletakkan Kunci SSH Anda (di bawah Keamanan)> kemudian Anda menambahkan kunci di sini.
  • Jika Anda secara tidak sengaja memasukkan kunci SSH Anda ke dalam repositori (berbeda dengan akun Anda), maka hapus yang ada di repositori.

Butuh waktu lama bagi saya untuk menyadari, entah bagaimana bahkan setelah membaca jawaban di sini tidak klik.

David Liu
sumber
3

Pertama-tama pilih atau buat kunci yang ingin Anda gunakan untuk mendorong ke Bitbucket. Katakanlah kunci publiknya ada di~/.ssh/bitbucket.pub

  • Tambahkan kunci publik Anda ke Bitbucket dengan masuk dan masuk ke profil publik Anda, pengaturan, ssh-key, tambahkan kunci.
  • Konfigurasikan ssh untuk menggunakan kunci itu saat berkomunikasi dengan Bitbucket. Misalnya di Linux tambahkan ke ~/.ssh/config:
    Host bitbucket.org
    IdentityFile ~/.ssh/bitbucket
Ivan Ogai
sumber
2

Baru-baru ini saya menghadapi masalah yang sama. Saya mendapat kesalahan berikut:

akses repositori ditolak. akses melalui kunci penyebaran hanya baca.

Anda dapat memiliki dua jenis kunci SSH:

  1. Untuk seluruh akun Anda yang akan berfungsi untuk semua repositori
  2. Per kunci SSH repositori yang hanya dapat digunakan untuk repositori tertentu.

Saya cukup menghapus kunci SSH repositori saya dan menambahkan kunci SSH baru ke akun saya dan itu berhasil dengan baik.

Saya harap ini membantu seseorang. Bersulang

Yoones Mehdian
sumber
1

Saya memiliki masalah yang sama dengan Kabir Sarin. Solusinya adalah mengkloning repo melalui SSH, daripada menggunakan URL https. jadi inilah yang membantu saya, dan semoga orang lain:

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

Langkah:

  1. Buat kunci ssh di server sumber

    ssh-keygen

  2. Cat dan salin id_rsa.pub yang terletak di bawah direktori ~. / Ssh

  3. Pergi ke Bitbucket, jika Anda telah mengatur kunci akses untuk repositori lalu hapus kunci publik yang ada
  4. Buka avatar Bitbucket> Pengaturan Bitbucket> Kunci SSH (di bawah Keamanan, panel kiri)> Klik 'Tambahkan Kunci'> rekatkan kunci publik.
  5. Periksa apakah itu berfungsi dengan menjalankan perintah di bawah ini pada server sumber

    git remote show origin

  6. Untuk mengambil dan mendorong dari server sumber, jika protokolnya adalah 'https' maka Anda harus mengubahnya ke 'git + ssh' dengan menjalankan perintah di bawah ini

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

  7. Periksa apakah Anda dapat melakukan push to the repo.

Selesai!

rahul darga
sumber
apa gunanya jawaban yang benar sudah diberikan 3 atau 4 kali? mengapa tidak mencoba menjawab pertanyaan yang masih belum menjawab.
zabumba
1
Terima kasih atas sarannya.
rahul darga
0

Yang Anda butuhkan - tambahkan kunci lain dan gunakan.

Seperti yang saya temukan kunci pertama - selalu Kunci Penempatan.

Victor Perov
sumber
0

Terkadang itu tidak berhasil karena Anda secara manual mengatur kunci lain untuk bitbucket ~/.ssh/config.

sean
sumber
0

Dua langkah proses untuk dapat mendorong tarik
Langkah 1: Menghasilkan ssh key (publik dan swasta) di mac

Step2: Masukan kunci pribadi di mac dan kunci publik di situs git

bawah langkah-langkah rinci adalah untuk pengguna mac

Langkah 1: Menghasilkan kunci

  1. (pastikan Anda telah menginstal git) https://git-scm.com/download/mac
  2. buka terminal dan ketik ssh-keygenini akan meminta Anda untuk memasukkan lokasi penyimpanan untuk kunci, Anda dapat mengetik/Users/[machinename]/.ssh/[keyname]
  3. Selanjutnya akan meminta frasa sandi, Anda dapat membiarkannya kosong dengan menekan enter atau memasukkan beberapa kata kunci untuk dimasukkan lagi pada prompt berikutnya
  4. Ini akan membuat dua kunci untuk Anda, pribadi dan publik, dengan nama [keyname] dan [keyname] .pub

Step2: mendorong kunci ke lokasi yang sesuai [mac dan akun jarak jauh yaitu Github, bitbucket, gitlab dll]

  1. Ketik ssh-add -K ~/.ssh/[keyname]terminal untuk menambahkan kunci pribadi Anda ke mac
  2. Ketik pbcopy < ~/.ssh/[keyname].pubuntuk menyalin kunci publik ke clipboard
  3. Buka pengaturan akun di situs web git Anda masing-masing dan pergi untuk menambahkan kunci, di sana tempelkan kunci publik yang disalin di atas

Selesai, sekarang Anda bisa mendorong tarikan.

Akshay Vijay Jain
sumber
Bagi mereka yang telah downvoted, saya berjuang sepanjang hari dan saya tidak dapat menemukan jawaban apa pun secara langsung menyelesaikan masalah saya, dan langkah-langkah yang disebutkan di sini secara langsung menyelesaikannya dan mereka bersifat umum. Anyways
Akshay Vijay Jain
-1

ini dia kode lengkap untuk mengkloning semua repo dari tim / pengguna BitBucket yang diberikan

# -*- 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 = '[email protected]:{}/{}.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)

Info lebih lanjut: https://thepythoncoding.blogspot.com/2019/06/python-script-to-clone-all-repositories.html

Kais Tounsi
sumber
-3

untuk kesalahan ini: conq: akses repositori ditolak. akses melalui kunci penyebaran hanya baca.

Saya mengubah nama kunci saya, misalnya

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

Saya bekerja pada kunci saya sendiri di bitbucket

Elron
sumber