プライベートPCでwebアプリ開発を始めようと rails new
してfirst commitの内容をgithubに反映させようとしたところ以下のようなエラーが出て1日ハマってしまったので自戒も込めてメモ。
前提としてやっていたこと
- githubで新しいリポジトリを作成している。
- gitリモート接続登録している。
- 公開鍵をgithubのsettingに登録。
発生したエラー
### originのリポジトリにプッシュする
$ git push origin master
#-------------------
Bad owner or permissions on ~/.ssh/config
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
#-------------------
「アクセス権限とリポジトリの存在を確認してくれ」と言われている。
確認した内容
gitリモート接続出来ているか
$git remote -v
origin git@github.com:githubaccaunt/projectname.git (fetch)
origin git@github.com:githubaccaunt/projectname.git (push)
この様に出力されてたらOK。
もしされてなかったら
$git remote add origin https://github.com/githubaccaunt/projectname.git
keyが作成されているか。
前提で公開鍵を登録していたが念の為
$ ls ~/.ssh/
id_rsa id_rsa.pub
確かに存在している(これで出てこない人は検索してみてね)。
念の為githubに公開鍵を登録し直してみた。
# 公開鍵のクリップボードへのコピー
pbcopy < ~/.ssh/id_rsa.pub
それをgithubで
- 右上のアイコン→Settings→SSH and GPG keys→New SSH key
~/.ssh/configの中身確認
$ vim ~/.ssh/config
Host gitHub↲
HostName github.com↲
User git↲
IdentityFile ~/.ssh/id_rsa↲
サイトによって記述の仕方は若干異なるけど大多数はこれ。
vimは使い慣れていないけど
- Iでインサートモード
- esc→:waで保存
- :qaで終了
とりあえず中身もタイポとかはしてなさそうだった。
sshへの接続確認
$ ssh -T git@github.com
これを実行して
Hi your! You've successfully authenticated, but GitHub does not provide shell access.
接続できている。これでpush出来るかと思ったら
なぜかエラーメッセージは同じものだった
ひと通り関連した検索内容に書かれているものは再確認・再試行したがダメだった。SSH認証まで取れているのになぜだろう。
頼れるは公式Doc
GitHub公式Docを参考にしたら大事な手順が抜けていることが判明。
そもそもSSHへの接続確認までの手順として正しいのは
- 既存の SSH キーの確認
- 新しい SSH キーを生成する
- SSH キーを ssh-agent に追加する
- GitHub アカウントへの新しい SSH キーの追加
- SSH 接続をテストする
なのだが3.を抜かしていることに気づく。
解決
### ssh-agentが動作しているか確認
$ eval "$(ssh-agent -s)"
Agent pid 32047
### 秘密鍵を追加
$ ssh-add ~/.ssh/id_rsa
...
Identity added: ~/.ssh/id_rsa
終わりに
なかなか環境構築って数を沢山やるわけじゃないから個人の知見があまりなかったが、SSH周りの復習も兼ねていい経験になった。