gitsshssh-keyspublic-key

Git: How to solve Permission denied (publickey) error when using Git?


I'm on Mac Snow Leopard and I just installed git.

I just tried

git clone [email protected]:cakebook.git

but that gives me this error:

Initialized empty Git repository in `/Users/username/Documents/cakebook/.git/`
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

What am I missing?
I've also tried doing ssh-keygen with no passphase but still same error.


Solution

  • If the user has not generated a ssh public/private key pair set before

    This info is working on theChaw but can be applied to all other git repositories which support SSH pubkey authentications. (See [gitolite][1], gitlab or github for example.)

    First start by setting up your own public/private key pair set. This can use either DSA or RSA, so basically any key you setup will work. On most systems you can use ssh-keygen.

    • First you'll want to cd into your .ssh directory. Open up the terminal and run:

    cd ~/.ssh && ssh-keygen

    • Next you need to copy this to your clipboard.
    • On OS X run: cat id_rsa.pub | pbcopy
    • On Linux run: cat id_rsa.pub | xclip
    • On Windows (via Cygwin/Git Bash) run: cat id_rsa.pub | clip
    • On Windows (Powershell) run: Get-Content id_rsa.pub | Set-Clipboard (Thx to @orion elenzil)
    • Add your key to your account via the website.
    • Finally setup your .gitconfig.
    • git config --global user.name "bob"
    • git config --global user.email bob@... (don't forget to restart your command line to make sure the config is reloaded)

    That's it you should be good to clone and checkout.

    Further information can be found at https://help.github.com/articles/generating-ssh-keys (thanks to @Lee Whitney) [1]: https://github.com/sitaramc/gitolite

    -

    If the user has generated a ssh public/private key pair set before

    • check which key have been authorized on your github or gitlab account settings
    • determine which corresponding private key must be associated from your local computer

    eval $(ssh-agent -s)

    • define where the keys are located

    ssh-add ~/.ssh/id_rsa