Edited at

Gitで”Permission denied (publickey).” が出たときのメモ

SourceTreeを使ってBitbucketを利用しています。

WindowsからMacに移行したので環境を作り直し、同じようにプッシュしようとしたら

”Permission denied (publickey).” 

というエラーが出てしまったので、その対処法をメモしておきます。


前提条件


  • すでにBitbucket上にリポジトリがある

  • ローカルにもリポジトリがある(他の環境からHDDまるごとコピーしてきた等)

  • SourceTreeもインストール済み

  • 変更をプッシュしようとしたら表題のエラーが出てしまう


MacにSSH鍵の準備


手順① SSHの鍵を作成

// hoge@hoge.com の部分はBitbucketに登録しているメールアドレス

$ ssh-keygen -t rsa -C hoge@hoge.com


手順② 作成された鍵の名前を変更する

// 名前は自分でわかれば何でも構わない

$ mv id_rsa bitbucket_rsa
$ mv id_rsa.pub bitbucket_rsa.pub


手順③ OSにSSH鍵を認識させる

$ cd ~/.ssh/

$ vi config

下記内容を記述


~/.ssh/config

Host bitbucket.org

HostName bitbucket.org
User git
Port 22
IdentityFile ~/.ssh/bitbucket_rsa // 名前変更したSSH鍵
TCPKeepAlive yes
IdentitiesOnly yes


Bitbucketへの登録


手順④ 公開鍵の内容をクリップボードにコピー

// ファイル名は自分で変更したものを入力

$ pbcopy < bitbucket_rsa.pub


手順⑤ アカウント情報に公開鍵を追加

参考:Bitbucketアカウントに公開鍵をインストールする方法

https://confluence.atlassian.co.jp/pages/viewpage.action?pageId=35095449


  1. Bitbucketにログイン

  2. 画面右上の人型から アカウントの管理

  3. 左側の SSHキー

  4. 鍵を追加

  5. Labelに適当な名前(PC名とか)を入力し、Keyにクリップボードの内容をペースト。鍵を追加


手順⑥ ターミナルからログインの確認

$ ssh -T git@bitbucket.org


// 成功した場合
logged in as *****.
You can use git or hg to connect to Bitbucket. Shell access is disabled.

// 失敗した場合
Permission denied (publickey).

上記手順で失敗した場合は ~/.ssh/config の記述が間違えている可能性があります(他にも回線の不具合とかBitbucketが落ちてるとかもありますが)。


おわり

今回の自分のつまづきポイントは、リポジトリのconfigの記述と ~/.ssh/config の記述が違っていました。


hogehoge/.git/config

// リポジトリの記述

url = ssh://git@bitbucket.org/*****/******.git


~/.ssh/config

// OS側の設定

Host bitbucket // .orgが抜けている
HostName bitbucket.org

とあるサイトを参考にしたらこのような記述になっていたのですが、そのサイトの人はうまくいったのでしょうか??