😇

GitHubにSSH接続しようとして引っかかった話

2020/10/28に公開6

エラー内容

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

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

hamaa-affixhamaa-affix

上記の内容でまさにハマりきっていました。深夜にこの記事を読んで解決しました、ありがとうございます。

keikuchenkeikuchen

ありがとうございます!そう言っていただけて、記事にしてみた甲斐があって良かったです。

riontakashiriontakashi

私も上記の内容に思いっきりハマっていました。
ありがとうございます。

qaynamqaynam

とても、参考にできそうな記事でしたが、僕の場合は ssh -T git@github.com は成功するのですが、git clone したら👇がでます。

Cloning into '.'...
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

git clone github:【ユーザー名】/【リポジトリ名】.gitをした場合👇がでます。

ssh: Could not resolve hostname github: Name or service not known
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

~/.ssh/configにはちゃんと👇にようにhostを指定しているのに、原因がよくわかりません。


Host github
        HostName github.com
        User git
        IdentityFile ~/.ssh/id_rsa

何か似たような症状の経験はありませんででしょうか?

keikuchenkeikuchen

コメントありがとうございます。
同じ状況になったことは(記憶の上では)ないので憶測になりますが、考えられることとしては

  • ファイルのアクセス権限設定(chmodで変えられるやつ)
  • GitHub上にSSH keyを登録していない

あたりでしょうか...?

qaynamqaynam

アクセス権限与えてもだめでしたので、結局access tokenでcloneしました!