रिपॉजिटरी एक्सेस से वंचित। परिनियोजन कुंजी के माध्यम से पहुँच केवल-पढ़ने के लिए है


302

सफलतापूर्वक अपने रेपो को हेरोकू से क्लोन करने के बाद और एक और रिमोट जोड़ा

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) चलाने या सोर्सट्री का उपयोग करने के बाद भी मिल रही है

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

पहले मुझे समझ नहीं आया कि इस संदेश का क्या मतलब है। और यह शर्म की बात है।

मैंने ssh कुंजी जोड़ी बनाई और हरोकू में जोड़ा:

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

मैंने BitBucket में परिनियोजन कुंजी अनुभाग में अपनी कुंजी भी जोड़ी है। लेकिन मुझे कुछ याद आ रहा है। यह प्रश्न आलस्य से बाहर नहीं है, मैं बिटकॉइन गाइड सहित विभिन्न डॉक्स पढ़ रहा हूं। लेकिन यह अभी भी इस मुद्दे के आसपास नहीं मिलता है।

यह पोस्ट क्या मैं अपने हेरोकू गिट रेपो को बिटबकेट में आयात कर सकता हूं? और कैसे?

अतिरिक्त सुविधाएं:

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 कुंजी जोड़ना मेरे लिए काम किया
हरि दास

सवाल और जवाब दोनों को वोट करना याद रखें। चीयर्स !!
ज़ुम्बा

जवाबों:


720

मेरी तरफ से पहला भ्रम इस बात को लेकर था कि BitBucket में SSH कीज़ को कहाँ सेट किया जाए ।

मैं BitBucket में नया हूं और मैं एक परिनियोजन कुंजी सेट कर रहा हूं जो केवल रीड-ऐक्सेस देता है ।

इसलिए सुनिश्चित करें कि आप rsa pub keyअपनी बिटकॉइन खाता सेटिंग में सेट कर रहे हैं ।

अपने BitBucket अवतार पर क्लिक करें और Bitbucket सेटिंग्स चुनें (खाते का प्रबंधन)। आप SSH कुंजी सेट करने में सक्षम होंगे ।

मैंने केवल परिनियोजन कुंजी को हटा दिया है , मुझे अब इसके लिए कोई आवश्यकता नहीं है। और इसने काम किया

यहां छवि विवरण दर्ज करें


48
जवाब के लिए धन्यवाद। यह ठीक वैसी ही बात है जो मुझे याद आ रही थी। मैंने SSH कुंजी के बजाय परिनियोजन कुंजी जोड़ा।

27
हाँ! आपके उत्तर के लिए धन्यवाद। एटलसियन को वास्तव में इसे अपने दस्तावेज़ में स्पष्ट करना चाहिए।
राल्फ डेविड एबरनैथी

14
हाँ, ssh कुंजी मेनू बिटबकेट में अच्छी तरह से छिपा हुआ है!
jonprasetyo

3
बड़ी मदद! दया जोएलमारानहाओ!
किमी

6
अपना जवाब मिलने से पहले 30 मिनट तक संघर्ष किया, बहुत-बहुत धन्यवाद
micgeronimo

64

अब एसएसएच विकल्प सुरक्षा सेटिंग्स के तहत है

अपने अवतार पर क्लिक करें -> Bitbucket सेटिंग्स -> SSH कुंजी -> कुंजी जोड़ें

अपनी सार्वजनिक कुंजी चिपकाएँ


10
धन्यवाद। मैं सिर्फ अपने मामले का वर्णन करना चाहता हूं। मैंने अपनी सार्वजनिक कुंजी को अपने Bitbucket खाता कुंजियों के बजाय रिपॉजिटरी सेटिंग्स में जोड़ा। इसलिए मैंने रिपॉजिटरी में कुंजी को हटा दिया और इसे काम करने के लिए अपनी प्रोफ़ाइल सेटिंग्स में जोड़ा।
१०:

17

आप अपने प्रोफ़ाइल के लिए और अपने प्रमुख जोड़ने की जरूरत नहीं एक विशिष्ट भंडार करने के लिए। इसका अनुसरण करें: https://community.atlassian.com/t5/Bitbucket-questions/How-do-I-add-an-SSH-key-as-opposed-to-a-deployment-key/qaq-p/413373


यह मेरा मामला था धन्यवाद!
फाइनल

13

तैनाती कीज़ को ही पढ़ा जाता है। लिखने की पहुँच को सक्षम करने के लिए आपको निम्न की आवश्यकता है:

  • इस तैनाती कुंजी को अपनी रिपॉजिटरी सेटिंग्स से हटा दें। आप इस कुंजी के साथ इस रेपो को वैसे भी नहीं लिख पाएंगे।

  • "अवतार -> सेटिंग्स -> एसएसएच कुंजी" पर जाएं और एक ही कुंजी जोड़ें

  • अब शाखा को हटाने के लिए धक्का देने की कोशिश करें

आप पहले रिपॉजिटरी में लिखने में सक्षम थे, लेकिन यह BitBucket में एक बदलाव है जहाँ आप अब तैनाती कुंजी के साथ लिखने में सक्षम नहीं हैं।


धन्यवाद यह मेरे लिए लंबे समय तक बाल खींचने के बाद काम किया
उमर आदिल

10

'परिनियोजन कुंजी' केवल रीड एक्सेस के लिए है। इसके माध्यम से काम करने का एक अच्छा तरीका निम्नलिखित है।

  • बनाएं और SSH कुंजी और इसे बिटबकेट में जोड़ें (उपयोगकर्ता अवतार -> बिटबकेट सेटिंग-> एसएसएच कुंजी)
  • ~ / .Ssh / known_hosts
  • ssh-add -D (SSH एजेंट पर लोड की गई कुंजी निकालें)
  • ssh-add ~ / .ssh / your_pStreet_key_for_bitbucket
  • ssh git@bitbucket.org -Tv (सत्यापित करें कि आपकी कुंजी बिटबकेट से कनेक्ट करने के लिए उपयोग की जा रही है)
  • git पुश 'दूरस्थ नाम' 'शाखा का नाम'

9

यदि आप एक ही कुंजी को प्रबंधित खाता SSH कुंजी के अंतर्गत जोड़ने जा रहे हैं, तो आपको परिनियोजन कुंजी को हटाना होगा।


3
तैनाती कुंजी हटाया जा रहा है मुझे देता हैSomeone has already registered this as a deploy key.
दान-klasson

3
स्पष्ट रहें कि आपको BITBUCKET SETTINGS के तहत shh सार्वजनिक कुंजी को जोड़ना चाहिए (जैसे कि पूर्ण BB खाते के लिए) NOT और मैं व्यक्तिगत रेपो सेटिंग्स के तहत नहीं दोहराता। यदि आपने रेपो सेटिंग के तहत एक कुंजी जोड़ी है, जिसके कारण आपको ये त्रुटियां हो रही हैं।
नैट उनी

8

TLDR: ssh-add ~ / .ssh / yourkey

मैंने अभी इस समस्या के माध्यम से काम किया है।

और किसी भी अन्य उत्तर ने मदद नहीं की।

मेरे पास सभी सही सामानों के साथ एक ./shsh/config है, जो पहले वाला रिपॉजिटरी वर्किंग फाइन (एक ही बिटबकेट खाता, एक ही कुंजी) है। तब मैंने एक तैनाती_की उत्पन्न की, और उसके बाद एक नया भंडार बनाया।

उसके बाद नए रेपो का क्लोन नहीं बना सका।

काश मैं जानता / जानती कि ssh एजेंट कैसे और क्यों इसे गड़बड़ कर रहा था, लेकिन इस कुंजी को जोड़ने से यह हल हो गया। मेरा मतलब है कि मेरे स्थानीय उबंटू में कुंजी जोड़ना, बिटकॉइन एडमिन में नहीं। आज्ञा बस है

    ~/.ssh$ ssh-add myregualrkey

आशा है कि यह किसी की मदद करता है।


अति उत्कृष्ट। यह ठीक वही है जिसकी मुझे तलाश थी।
जपजस्मा

3
मुझे समझ नहीं आया कि आपने क्या किया।
केव

5

जब मैं तैनाती की कुंजी का उपयोग करने की कोशिश कर रहा था तो ऐसा हुआ था, क्योंकि मैं यही चाहता था।

मैं के माध्यम से कनेक्ट कर सकता था ssh -T git@bitbucket.orgऔर यह मुझे बताएगा कि मेरे पास उस रिपॉजिटरी को पढ़ने की पहुंच थी जिसे मैं चाहता था, लेकिन git cloneविफल हो जाएगा।

क्लीयर करना ~/.ssh/known_hosts, एक नई कुंजी उत्पन्न करना , ssh-keygenबिटबकैट में उस नई कुंजी को जोड़ना, और फिर से प्रयास करना मेरे लिए इसे तय किया।


4

मैं निम्नलिखित पर फिर से जोर देना चाहूंगा:

  • आपने SSH कुंजी को अपने रिपॉजिटरी (उदाहरण ExampleRepo) में जोड़ा हो सकता है , लेकिन यह है नहीं है जहाँ SSH कुंजी जाती है
  • यह आपके PROFILE में जाने के लिए है । यह स्क्रीन के निचले बाएँ कोने पर छोटा अवतार है। यहाँ, आप एक मिल जाएगा अपनी SSH कीज़ (सुरक्षा के तहत) डालने के अलग स्थान > फिर आप यहाँ इसके बजाय कुंजी जोड़ेंगे।
  • यदि आपने गलती से अपनी SSH कुंजी को रिपॉजिटरी में डाल दिया (जैसा कि आपके खाते के विपरीत है), तो रिपॉजिटरी में से एक को हटा दें।

मुझे महसूस करने के लिए उम्र ले लिया, किसी भी तरह यहाँ जवाब पढ़ने के बाद भी यह क्लिक नहीं किया।


3

हाल ही में मैंने उसी मुद्दे का सामना किया। मुझे निम्नलिखित त्रुटि मिली:

रिपॉजिटरी एक्सेस से वंचित। परिनियोजन कुंजी के माध्यम से पहुँच केवल-पढ़ने के लिए है।

आपके पास SSH कुंजी के दो प्रकार हो सकते हैं:

  1. आपके पूरे खाते के लिए जो सभी रिपॉजिटरी के लिए काम करेगा
  2. प्रति भंडार एसएसएच कुंजी जो केवल उस विशिष्ट भंडार के लिए उपयोग की जा सकती है।

मैंने बस अपनी रिपॉजिटरी SSH कुंजी को हटा दिया और अपने खाते में एक नई SSH कुंजी जोड़ी और इसने अच्छा काम किया।

मुझे उम्मीद है कि यह किसी की मदद करता है। चियर्स


3

Bitbucket में पुश करने के लिए आप जिस कुंजी का उपयोग करना चाहते हैं उसे पहले चुनें या बनाएं। मान लीजिए कि इसकी सार्वजनिक कुंजी है~/.ssh/bitbucket.pub

  • अपनी सार्वजनिक कुंजी को Bitbucket में लॉग इन करके और अपनी सार्वजनिक प्रोफ़ाइल, सेटिंग, ssh-key में जाकर कुंजी जोड़ें।
  • Bitbucket के साथ संचार करते समय उस कुंजी का उपयोग करने के लिए ssh कॉन्फ़िगर करें। जैसे लिनक्स में जोड़ें ~/.ssh/config:
    Host bitbucket.org
    IdentityFile ~/.ssh/bitbucket

2

कदम:

  1. स्रोत सर्वर पर ssh कुंजियाँ बनाएँ

    ssh-keygen

  2. बिल्ली और कॉपी ~_ ssh निर्देशिका के तहत id_rsa.pub

  3. Bitbucket पर जाएं, यदि आपने रिपॉजिटरी के लिए पहले से ही एक्सेस कीज़ लगाई हैं, तो मौजूदा पब्लिक की (डिलीट) को हटा दें
  4. Bitbucket अवतार> Bitbucket सेटिंग्स> SSH Keys (सुरक्षा के तहत, बाएं फलक) पर जाएं> 'Add Keys' पर क्लिक करें> सार्वजनिक कुंजी पेस्ट करें।
  5. जाँच करें कि क्या यह स्रोत सर्वर पर कमांड के नीचे चल कर काम करता है

    git remote show origin

  6. स्रोत सर्वर से लाने और पुश करने के लिए, यदि प्रोटोकॉल 'https' है, तो आपको इसे कमांड से नीचे चलाकर 'git + ssh' में बदलना होगा।

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

  7. जांचें कि क्या आप रेपो को धक्का दे सकते हैं।

किया हुआ!


जब सही जवाब पहले से ही 3 या 4 बार दिया गया हो तो क्या बात है? एक ऐसे सवाल का जवाब देने की कोशिश क्यों नहीं की गई जिसका अभी भी कोई जवाब नहीं है।
zabumba

1
इस तरह की सलाह के लिए धन्यवाद।
राहुल दरोगा

1

मेरे पास वही मुद्दा था जो कबीर सरीन के पास था। समाधान SSH के माध्यम से रेपो क्लोन करने के लिए था, बजाय https URL का उपयोग करने के। इसलिए इससे मुझे और दूसरों को उम्मीद थी कि:

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

1

स्टेप
1 को पुश करने में सक्षम होने के लिए दो चरण प्रक्रिया : मैक

चरण 2 पर ssh कुंजी (सार्वजनिक और निजी) जेनरेट करें: मैक में निजी कुंजी और git वेबसाइट में सार्वजनिक कुंजी को

नीचे रखें। विस्तृत चरण मैक उपयोगकर्ताओं के लिए हैं

चरण 1: चाबियाँ बनाना

  1. (सुनिश्चित करें कि आपने गिट स्थापित किया है) https://git-scm.com/download/mac
  2. टर्मिनल खोलें और ssh-keygenयह आपको कुंजी के लिए संग्रहण स्थान दर्ज करने के लिए संकेत देगा, आप टाइप कर सकते हैं/Users/[machinename]/.ssh/[keyname]
  3. इसके बाद यह पासफ़्रेज़ के लिए पूछेगा, आप या तो इसे खाली दबाकर दर्ज कर सकते हैं या अगले संकेत पर फिर से दर्ज किए जाने के लिए कुछ कीवर्ड दर्ज कर सकते हैं
  4. इसने आपके लिए, निजी और सार्वजनिक, नाम [keyname] और [keyname] .pub के साथ दो कुंजियाँ बनाई होंगी

चरण 2: कुंजी को उपयुक्त स्थानों पर धकेलना [मैक और दूरस्थ खाते अर्थात गितुब, बिटबकेट, गिटलैब आदि]

  1. ssh-add -K ~/.ssh/[keyname]मैक में अपनी निजी कुंजी जोड़ने के लिए टर्मिनल में टाइप करें
  2. pbcopy < ~/.ssh/[keyname].pubसार्वजनिक कुंजी को क्लिपबोर्ड पर कॉपी करने के लिए टाइप करें
  3. अपनी संबंधित वेबसाइट पर खाता सेटिंग्स खोलें और कुंजी जोड़ने के लिए जाएं, ऊपर कॉपी की गई सार्वजनिक कुंजी पेस्ट करें

हो गया, अब आप पुल को धक्का दे सकते हैं।


जो लोग नीचे गए हैं, मैं पूरे दिन संघर्ष कर रहा था और मुझे अपनी समस्या का समाधान करने के लिए सीधे कोई जवाब नहीं मिल रहा था, और यहां बताए गए कदम सीधे उन्हें हल करते हैं और वे सामान्य हैं। वैसे भी
अक्षय विजय जैन ०

0

आपको बस ज़रूरत है - एक और कुंजी जोड़ें और इसका उपयोग करें।

जैसा कि मुझे पहली कुंजी मिली है - हमेशा तैनाती की।


0

कभी-कभी यह काम नहीं करता है क्योंकि आप मैन्युअल रूप से बिटबकैट के लिए एक और कुंजी सेट करते हैं ~/.ssh/config


-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

मैं बिटबकैट पर अपनी कुंजी पर काम करता हूं

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.