not in use blog

エンジニアの日々の学びと思考の記録。

git@bitbucket.org: Permission denied (publickey)の対処法

エラー内容

ローカルで新しいプロジェクトを作ってbitbucketにpushしようとしたところで下記エラーに直面

matsuda@matsudaMacBook-Pro:~/workspace/test_repository (master)$ git push origin master
git@bitbucket.org: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

日本語訳すると

パーミッション拒否(公開鍵)
リモートリポジトリを読み込めません

正しいアクセス権を持ち、リポジトリが存在することを確認してください。

疑問に思ったこと

・同一PC内の別プロジェクトはpushできてるから問題なくpushできると思ったんだけどな

・プロジェクトごとにキーペア作って上げないといけないのだろうか?

・git remote add したとき、リモートリポジトリのURL打ち間違えたか?

・そもそも新しくプロジェクト作ってリモートリポジトリにpushするときってどういう手順でやってたっけ?

(おさらい)ローカルで新しくプロジェクトを作って、リモートリポジトリにpushするまで

# 前提条件:プロジェクトは既に作られていて、環境構築が済んでいる状態とする

# プロジェクトがあるディレクトリに移動
$ cd workspace/test_new_project

# 変更内容をすべてステージングにあげる。最初なので一気に上げて問題なし
$ git add .

# コミットメッセージを書く。だいたい最初は"first commit"
$ git commit -m "first commit"

# リモート(今回はbitbucket)で、同じプロジェクト名でリポジトリを作っておく。

# 作成したリモートリポジトリを設定する
# $ git remote add origin リモートリポジトリのURL
$ git remote add origin git@bitbucket.org:matsuda/test_repository.git

# リモートのmasterにpush
$ git push origin master

こんな流れ。今回リモートリポジトリは事前に作っていて、タイポも特になかったのでやはりSSH鍵あたりで問題があった。

対処法

ローカルでキーペアを作成する

# hoge@hoge.comはbitbucketに登録しているメールアドレスを入力
# rsa_matsudaとしている部分はkeyの名前を任意で入力

$ ssh-keygen -t rsa -C hoge@hoge.com -f rsa_matsuda
# .sshディレクトリに移動
$ cd ~/.ssh/

# configファイルにbitbucketの設定を書き込む。ファイルがなくてもviコマンドで作成される
$ vi config

configの内容は下記の通り。秘密鍵のファイル名を入れておく

Host bitbucket.org
  HostName bitbucket.org
  User git
  Port 22
  IdentityFile ~/.ssh/rsa_matsuda
  TCPKeepAlive yes
  IdentitiesOnly yes

公開鍵の情報を、下記コマンドでクリップボードに保存

$ pbcopy < rsa_matsuda.pub

その後、bitbucketを開き、SSH鍵を登録するページにコピーした公開鍵を貼り付けて登録。

再度ローカルに戻り、$ git push origin masterを実行

matsuda@matsudaMacBook-Pro:~/workspace/test_repository (master)$ git push origin master
Enumerating objects: 102, done.
Counting objects: 100% (102/102), done.
Delta compression using up to 4 threads
Compressing objects: 100% (85/85), done.
Writing objects: 100% (102/102), 27.81 KiB | 1.74 MiB/s, done.
Total 102 (delta 5), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (5/5), done.
To bitbucket.org:matsuda/test_repository.git
 * [new branch]      master -> master

よかったよかった。

おまけ

リモートリポジトリのURLを変更するとき

$ git remote set-url origin {new url}

参考

program-life.com

qiita.com