GitHubにSSH接続しようとして引っかかった話
エラー内容
こんな風に怒られました。
git@github.com: 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 git@github.com:【ユーザー名】/【リポジトリ名】.git
原因
そもそもSSHのconfigで設定した内容って、
「sshを使う文脈で"github"と書いたら"git@github.com -i ~/.ssh/id_rsa_github"に読み替えますよ」
ってことなんですよね。だから
$ git clone git@github.com:【ユーザー名】/【リポジトリ名】.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 git@github.com
おことわり
本記事は技術ブログサービスQrunchのサービス終了に伴い移行したものです。
執筆時の日時は2019-02-11 19:09:08であり、記載内容は現在の状況と異なる可能性がありますのでご注意ください。
Discussion
上記の内容でまさにハマりきっていました。深夜にこの記事を読んで解決しました、ありがとうございます。
ありがとうございます!そう言っていただけて、記事にしてみた甲斐があって良かったです。
私も上記の内容に思いっきりハマっていました。
ありがとうございます。
とても、参考にできそうな記事でしたが、僕の場合は
ssh -T git@github.com
は成功するのですが、git clone
したら👇がでます。git clone github:【ユーザー名】/【リポジトリ名】.git
をした場合👇がでます。~/.ssh/config
にはちゃんと👇にようにhostを指定しているのに、原因がよくわかりません。何か似たような症状の経験はありませんででしょうか?
コメントありがとうございます。
同じ状況になったことは(記憶の上では)ないので憶測になりますが、考えられることとしては
あたりでしょうか...?
アクセス権限与えてもだめでしたので、結局access tokenでcloneしました!