エラー内容
こんな風に怒られました。
[email protected]: Permission denied (publickey).
fatal: Could not read from remote repository.
あらすじ
今まで何となく知っているだけだったGit並びにGitHubをそろそろ使い始めなくてはと思い、下記サイトに従ってぽちぽちと進めていました。
今日からはじめるGitHub 〜 初心者がGitをインストールして、プルリクできるようになるまでを解説
こちらの手順ではSSHのconfigファイルを編集することになるのですが、これの意味をきちんと理解せず愚直に同じ作業を行なった結果、しょうもないエラーを発生させてしまっていました。
状況
~/.ssh配下に秘密鍵(id_rsa_github)と公開鍵(id_rsa_github.pub)を作成し、configファイルを以下のように設定していました。
Host github
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_github
この状態でローカルのGit作業ディレクトリにてcloneをしようとしたところ冒頭のエラーが発生し、何でだろうなぁとか悩んでいました。$ git clone [email protected]:【ユーザー名】/【リポジトリ名】.git
原因
そもそもSSHのconfigで設定した内容って、
「sshを使う文脈で”github”と書いたら”[email protected] -i ~/.ssh/id_rsa_github”に読み替えますよ」
ってことなんですよね。だから$ git clone [email protected]:【ユーザー名】/【リポジトリ名】.git
と書いてしまった場合configファイルに書いたことは何の意味も為さず、デフォルトの秘密鍵名であるid_rsaを探し始めます。で、そんなものはないのでPermission denied、というわけでした。
解決方法
configファイルを活かすなら、こう書くことになります。$ git clone github:【ユーザー名】/【リポジトリ名】.git
また、pushの際に使用するURLはgit remote -v
で確認できますが、これも以下コマンドで変更しておきましょう。$ git remote set-url origin github:【ユーザー名】/【リポジトリ名】.git
おわりに
まあ言ってしまえばめちゃくちゃに初歩的なミスだったのですが、一つ勉強になったということで記事にしました。
エラー文面で検索すると「鍵を作成しているか?」「秘密鍵のパーミッションを正しく設定しているか?」「GitHubに公開鍵を登録しているか?」といったものしか見当たらなかったので、この記事が誰かの参考になれば幸いです。
おまけ
このコマンドで処理の詳細を見られるので、困った時は活用しましょう。$ ssh -vT [email protected]
この記事へのコメント