エラー内容

こんな風に怒られました。

[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]

関連記事

この記事へのコメント

まだコメントはありません
+1
18
自分のための備忘を兼ねて
このエントリーをはてなブックマークに追加