Showing results for 
Search instead for 
Did you mean: 
Sign up Log in

It's not the same without you

Join the community to find out what other Atlassian users are discussing, debating and creating.

Atlassian Community Hero Image Collage

Creating repo in bitbucket cloud via shell script & SSH keys Edited

Hi there,


i need assistant to understand where i am going wrong. Basically i am trying to develop a shell script that create a REPO on bitbucket cloud and then configured the same repo with git. But am facing problem in doing so. 

Below the curl command which i was using. This command was working fine and creating a new repo on the BitBucket cloud account.

curl -X POST -v -u '':'MY_PASSWORD' -H "Content-Type: application/json" \${REPO_NAME} \ -d '{"scm": "git", "is_private": "true", "fork_policy": "no_public_forks" }'

 Now i have configured SSH keys with bitbucket account to use the git remote add origin command. After using ssh key the above command is not working for me. I had configured SSH so that i dont need to manually type the password and my shell script can ran independently.

Error which i am getting. 

* About to connect() to port 443 (#0)
* Trying
* Connected to ( port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
* SSL connection using TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
* Server certificate:
* subject: CN=*,OU=Bitbucket,O="Atlassian, Inc.",L=San Francisco,ST=California,C=US
* start date: Jun 12 00:00:00 2017 GMT
* expire date: Jun 16 12:00:00 2020 GMT
* common name: *
* issuer: CN=DigiCert SHA2 High Assurance Server CA,,O=DigiCert Inc,C=US
* Server auth using Basic with user ''
> POST /2.0/repositories/weqwebsites/ HTTP/1.1
> User-Agent: curl/7.29.0
> Host:
> Accept: */*
> Content-Type: application/json
> Content-Length: 71
* upload completely sent off: 71 out of 71 bytes
< HTTP/1.1 405 Method Not Allowed
< Server: nginx
< Vary: Authorization
< Content-Type: text/html; charset=utf-8
< Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
< Date: Sun, 22 Mar 2020 20:02:04 GMT
< X-Served-By: app-1130
< X-Static-Version: b26e4d56649f
< X-Credential-Type: password
< X-Render-Time: 0.0173208713531
< Connection: Keep-Alive
< X-Version: b26e4d56649f
< X-Request-Count: 1216
< Allow: GET
< X-Frame-Options: SAMEORIGIN
< Content-Length: 0
* Connection #0 to host left intact


Complete Code block in sequence of their execution given below:

curl -X POST -v -u '':'MY_PASSWORD' -H "Content-Type: application/json" \${REPO_NAME} \ -d '{"scm": "git", "is_private": "true", "fork_policy": "no_public_forks" }'

git init >> ${LOG}
git add * >> ${LOG}
git commit -m 'First Commit $DATE' >> ${LOG}
git remote add origin ssh://${REPO_NAME}.git >> ${LOG}
git push origin master >> ${LOG}


1 answer

1 accepted

1 vote
Answer accepted

Hello @weqwebsites ,

Welcome to the Community!

The problem in your request is missing repository name. Note this line in the verbose curl log:

POST /2.0/repositories/weqwebsites/ HTTP/1.1

It looks like REPO_NAME environment variable is not set when your script is executed, since the endpoint to create a repository is this: 


Also, note that unfortunately you leaked your credentials in the verbose log (Authorization HTTP header is Base64 encoded username and password). To protect your account we've deactivated it, you should receive an email from our Support team with instructions on how to restore your account.

Hope this helps. Let me know if you have any questions.


Hi Daniil, Thanks for securing my account. I didnt knew that verbose log revealed my account details.


Related to setting of the REPO_NAME environment variable, i printed the variable a line before that and it had proper name value in it.

The curl command give an error, but the line add origin execute properly and tries to find the REPO_NAME repository

git remote add origin ssh://${REPO_NAME}.git >> ${LOG}

So I can see one recent successful attempt to create a repository using curl in your account. Three previous requests within last 24 hours are missing repository path segment.

I can only think of something with the env variable substitution. Can you try calling it like this?

curl -X POST ... ""${REPO_NAME} ...

Can you also print your variable like this to verify there are no leading or trailing special characters?

echo '"'${REPO_NAME}'"'

It should print the value in double quotes.

As for the Git remote update, that changes only your local Git repository settings, as in it doesn't make any network calls nor verifies the URL. Can you check the URL configured by running git remote -v in the local repo created?


Okay, have done the way you suggested. please find the verbose log output below.

still the bitbucket cloud repo is not created.

> POST /2.0/repositories/weqwebsites/ HTTP/1.1

-----removed line that reveal the authentication password.

* upload completely sent off: 71 out of 71 bytes
< HTTP/1.1 401 Unauthorized
< Server: nginx
* Authentication problem. Ignoring this.
< WWW-Authenticate: Basic realm=" HTTP"
< Content-Type: text/html; charset=utf-8
< Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
< Date: Mon, 23 Mar 2020 05:56:20 GMT
< X-Served-By: app-1119
< X-Static-Version: b26e4d56649f
< X-Render-Time: 0.19837808609
< Connection: Keep-Alive
< X-Version: b26e4d56649f
< X-Request-Count: 4633
< X-Frame-Options: SAMEORIGIN
< Content-Length: 0



Also the when the git remote add origin execute now it gives me below error. I have SSH keys install on my linux environment yesterday itself. Has changing the password for my account made the public key invalid?

Permission denied (publickey).
fatal: Could not read from remote repository. 


Hey Daniil


Ignore my last reply, i had not changed my password in script after changing it due to deactivation. Now after correcting that i am still getting below error.

I have search for below error and it is mostly due to REPO NAME. the repo name that my REPO_NAME variable has is

< Connection: close
< X-Version: b26e4d56649f
< X-Request-Count: 4161
< X-Frame-Options: SAMEORIGIN
< Content-Length: 148
* Closing connection 0
{"type": "error", "error": {"message": "Invalid slug. Slugs must be lowercase, alphanumerical, and may also contain underscores, dashes, or dots."}}

Repository weqwebsites/ not found
fatal: Could not read from remote repository.

Please make sure you have the


Hey Daniil,


You were right, it is not getting the correct name format which is causing the problem. I have figured the problem out and hopefully will solve it in couple more minutes.


Thanks for your help.



Sahil (WEQwebsites)

Suggest an answer

Log in or Sign up to answer
Community showcase
Posted in Bitbucket

How do you use the Bitbucket-Jira integration? How does it help your team?

Hey everyone, over the past year, we've added several new features on how you can use Bitbucket and Jira together. We'd love to know how you'll are using the integration and how it's helping your t...

154 views 0 2
Join discussion

Community Events

Connect with like-minded Atlassian users at free events near you!

Find an event

Connect with like-minded Atlassian users at free events near you!

Unfortunately there are no Community Events near you at the moment.

Host an event

You're one step closer to meeting fellow Atlassian users at your local event. Learn more about Community Events

Events near you