わすれっぽいきみえ

みらいのじぶんにやさしくしてやる

GitHubとGistのssh鍵は同じはずなのにPermission Deniedと怒られた

表題の通り。

すでにローカルにあったメモをGitHubじゃなくてgistの方にあげようと突然思いついて、ペライチのmarkdownを適当に配置したgistを作ったあと、そのリポジトリgit remote add origin *repo name* を実行して、pullを実行したら以下のようなエラーが出た。

$ git pull -p
Warning: Permanently added the RSA host key for IP address '***' to the list of known hosts.
git@gist.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.

弾かれる理由がわからなかったので実験もしてみた。

$ ssh -T git@github.com
Hi kimikimi714! You've successfully authenticated, but GitHub does not provide shell access.

$ ssh -T git@gist.github.com
git@gist.github.com: Permission denied (publickey).

なるほど。もしかするとgistの方で読む必要のあるssh鍵がわからないのかもしれないと踏んだ。実際私のPCでは鍵を幾つか作っていた。

$ ll ~/.ssh
total 40K
-rw------- 1 kimikimi714 staff  801 12 24 16:54 config
-rw------- 1 kimikimi714 staff 1.7K  2 25  2014 github_rsa
-rw-r--r-- 1 kimikimi714 staff  403  2 25  2014 github_rsa.pub
-rw------- 1 kimikimi714 staff 1.7K 12 18  2016 id_rsa
-rw-r--r-- 1 kimikimi714 staff  414 12 18  2016 id_rsa.pub
-rw-r--r-- 1 kimikimi714 staff 7.6K 12 24 16:45 known_hosts

たぶんgistへ接続するときにどの鍵を使えばいいかがわからなくて id_rsa の方を使ってそう。なのでsshのテスト時に明示的に鍵を指定してみる。

$ ssh -i ~/.ssh/github_rsa -T git@gist.github.com
Hi kimikimi714! You've successfully authenticated, but GitHub does not provide shell access.

予想的中。というわけで以下のようにconfigを書き換えた。

Host github.com
  IdentityFile ~/.ssh/github_rsa
Host gist.github.com
  IdentityFile ~/.ssh/github_rsa

これで鍵を指定しないでsshのテストを実行すると

ssh -T git@gist.github.com
Hi kimikimi714! You've successfully authenticated, but GitHub does not provide shell access.

🎉