Setting up Linux server with SSH keygen for BitBucket - mhulse/mhulse.github.io GitHub Wiki
June, 2017 update: Setup SSH key for local dev box and use agent forwarding for servers
October, 2021 update: Kinda related: https://blog.developer.atlassian.com/different-ssh-keys-multiple-bitbucket-accounts/
Create/setup the key on your server:
- Login to server using SSH/terminal.
- Depending on your setup, you may need to
$ su -
and enter the root user’s password (depending on the steps you take below, this will create files in that user’s home directory with root permissions). - List the contents of
.ssh
directory:$ ls -a ~/.ssh
and check for an existingid_rsa.pub
; use that default identity in BitBucket (skip to next heading) or … - At the command prompt, type:
$ ssh-keygen
. - Follow the on-screen instructions (on a production machine, a password should be entered for security purposes).
- For comparison’s sake, list the contents of
.ssh
directory:$ ls -a ~/.ssh
. - Check to see if
ssh-agent
is running:$ ps -e | grep [s]sh-agent
. - If not (above command returns nothing) then run:
ssh-agent /bin/bash
. - Add newly-created key to the
ssh-agent
:$ ssh-add ~/.ssh/id_rsa
. - View list of keys the
ssh-agent
is managing:$ ssh-add -l
. - Run
$ cat ~/.ssh/id_rsa.pub
and copy the output to your clipboard.
Reversing the above process is easy:
# Remove a specific identity:
$ ssh-add -d ~/.ssh/id_rsa
# Remove all identities:
$ ssh-add -D
$ rm ~/.ssh/id_rsa*
Add key to BitBucket
- On BitBucket, choose
avatar
>Manage Account
. - Switch to the account you want to manage and click
SSH keys
; add a new key which should be named to match the server name (e.g.,dev.foodomain.com
). - Paste the key into the
Key
field and clickAdd key
.
Clone BitBucket repo
- Go to your repo in BitBucket and copy the
SSH
URI (e.g.,[email protected]:user-name/repo-name.git
). - SSH to your server and navigate to the location you want to clone the repo to.
- From the command line, run:
$ git clone [email protected]:user-name/repo-name.git
. Note: If you want to specify the folder name that the repo clones into, add that to the end of the command (e.g.,git clone [email protected]:user-name/repo-name.git target-folder-name
).
Done!
Pulling updates
- SSH to your server.
- Navigate to your repo:
$ cd target-folder-name/
. - Run
$ git remote update && git status
$ git fetch
. - If there are changes to pull, then run
$ git pull
. - Optionally re-run
$ git remote update && git status
$ git fetch && git pull
to see if everything is clean.