こんにちは、のまち(@bokunomad)です。
Railsチュートリアル1.4.3のbitbucketの登録からです。このあたりはサクッと進めると思ってたのですがSSH接続関係で詰まってしまって小一時間かかってしまいました。
Contents
1.4.3 Bitbucket
BitbucketはGithubと同じくgitリポジトリホスティングサービスだが微妙に異なる点がある。
- Bitbucket = 共同作業者が一定数以上から有料。リポジトリの公開非公開は問わない
- Github = リポジトリが一般公開なら無料。非公開にするときは有料
初学者〜初心者レベルであれば共同作業者もいないだろうし、公開非公開も特に意味はないと思うのでどちらを選んでもよいと思う。
安全面を考えるならリポジトリ非公開でも無料で使えるBitbucketを使うべし。
SSH認証でPermission denied (publickey)に手こずる
git remote add origin git@bitbucket.org:ユーザー名/hello_app.git git push -u origin --all
git pushしたあとに以下のエラーが出てきた。
Permission denied (publickey). fatal: Could not read from remote repository.
対処したこと
まずはSSH秘密鍵をconfigファイルにセットする。IdentityFileに作成している秘密鍵ファイル名を入れる。対になる公開鍵データはBitbucket上の「bitbucket settings」→「SSH鍵」→「鍵を追加」より入力する。
公開鍵は「.pub」で秘密鍵には「.pub」がつかないので注意。
Host bitbucket.org HostName bitbucket.org User git Port 22 IdentityFile ~/.ssh/**** ←秘密鍵のファイル名 TCPKeepAlive yes IdentitiesOnly yes
ここでひとまずgit pushを試してみましたが変わらずPermission deniedが出ました。
そこで検索してみると、どうやらssh-agent登録も必要だという情報を見つけたため登録してみます。
eval `ssh-agent` ssh-add ~/.ssh/*** ←秘密鍵ファイル名を入れる
Bad owner or permissionエラー
Bad owner or permissions on /home/***/.ssh/config fatal: Could not read from remote repository.
続いてBad owner or permissionエラーについてです。
これは.ssh/configのアクセス権限が適切についていなかったため起きたエラーです。
chmod 600 ~/.ssh/config
chmodでアクセス権限を変えてからもう一度git pushを試します。
WARNING UNPROTECTED PRIVATE KEY FILEが出る
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0644 for '/home/***/.ssh/***' are too open. It is required that your private key files are NOT accessible by others. This private key will be ignored. Load key "/home/***/.ssh/***": bad permissions Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.
次はなんだか大層な感じのエラーが出てきました。パーミッションが644と広く許可しすぎなのでセキュリティ的に良くないよという感じのエラーです。
ls -l ~/.ssh chmod 600 ~/.ssh/***
該当のファイルのアクセス権限を変更して再びgit pushするとようやくできました。ここまで約1時間半。長かった〜。
1.4.4 ブランチ
ブランチを使うことでマスターリポジトリをいじることなく機能追加であったりバグ修正をすることができる。
git checkout -b modify-README Switched to a new branch 'modify-README' git branch master * modify-README
新規作成した「modify-README」ブランチに切り替え。git branchで「*」が付いているのが現在のブランチ。その後READMEファイルに追記。
git commit -a -m "Improve the README file"
git commitで-mオプションでコメントを残す。
git checkout master Switched to branch 'master' git merge modify-README Updating 35f817f..488401e Fast-forward README.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) git branch -d modify-README Deleted branch modify-README (was 488401e).
masterブランチに切り替えてからマージ(変更)する。必要であればgit branch -dでブランチを削除します。
git push
最後にpushしてbitbucketに反映されていることを確認して終了です。
まとめ
Bitbucket関係はすぐに終わると思っていましたが相変わらず色々と詰まってしまいました。
エラーが出たらググる。エラーが出たらとにかくググるを繰り返して対処していくしかないですね。
次はHerokuです。以前Techacademyで使ったことがあるので早く進められるはずです!