2009-10-24(土) [長年日記]
■ 「Permission denied (publickey).」と言われてGitHubが使えなくなった場合の対処法
もう10日前になるのだが、自宅のマシンでGitHubからpullしようとしたら、
% git pull Permission denied (publickey).
と言われるようになってしまった。他のマシンからは問題なくpush/pullともにできるので、このマシンだけの問題なんだが、忙しかったこともあり、今日になってやっと対応。分散VCSだとどこで作業しても同じだから、危機感薄いなー(笑)。
で、GitHubにそのものずばりのドキュメントがある。ヘルプのTroubleshooting SSH issuesなのだが、ようするに「鍵を作り直せ」という乱暴なことが書いてある。おまえ、sshの鍵をそうホイホイと作り直していられるかっての*1。
こういうことが堂々と書いてあるのだとしたら、今後もGitHubでは同じようなことが起きるかも知れない。その場合に、GitHub専用の鍵にしておかないと、面倒でしょうがない。というわけでそうする。id_dsa_githubというファイルで鍵を作って、github.comにアクセスするときにはそれを使わせる:
% ssh-keygen -t dsa -f ~/.ssh/id_dsa_github % cat >> ~/.ssh/config Host github.com User git IdentityFile ~/.ssh/id_dsa_github ^D
あとは~/.ssh/id_dsa_github.pubの中身をGitHubに設定しなおして、無事に使えるようになった。これで今後同じことが起きても、GitHub専用の鍵だけ変えればいいので、他のホストに影響が及ばない(はず)。
*1 ちなみに、この現象が発覚してすぐ、公開鍵をGitHubに再登録してみたが、効果はなかった。
GitHubでは現在はDSAは使えないようです。
間違えました。RSAが駄目みたいでした。
Typoです。
% ssh-keygen -t dsa -f ~/.ssh/id_dsa_guthub
が
% ssh-keygen -t dsa -f ~/.ssh/id_dsa_github
ですね。
github
configのIdentityFile節がファイルを参照できませんので注意です
おお、本当だ。どうもです。修正しておきました。