エラー内容
ローカルで新しいプロジェクトを作って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}