git clone で「sign_and_send_pubkey: signing failed for RSA “/home/user/.ssh/id_rsa” from agent: agent refused operation git@github.com: Permission denied (publickey).」というエラーが出る件

タイトルがめちゃくちゃ長いんですが、要は新しい Linux (Ubuntu) に SSH で GitHub のリポジトリを clone しようとしたら、

$ git clone git@github.com:hogehoge/fugafuga.git
Cloning into 'fugafuga'...
sign_and_send_pubkey: signing failed for RSA "/home/user/.ssh/id_rsa" from agent: agent refused operation
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.

と言われて clone できなかったという話…

公開鍵・秘密鍵はすでに ~/.ssh/ に入ってるし ~/.ssh/config も設定してる、所有者は実行ユーザーと同じなのでなんでだろうなーと思ってネットで見かけた

chmod 600 ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa.pub

を実行したらすんなりいけてしまった…(公開鍵の方はとくに chmod しなくても通ったけど念のため)

パーミッションはたしか 744 になってたので Permission denied ってことはないでしょ…と思っていたけど、どうやら秘密鍵のパーミッションが過剰すぎても Permission denied 扱いになってしまうらしい。

秘密鍵は文字通り秘密の鍵なので、ファイルのオーナー以外は絶対に見れない権限にしておく必要がある
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
これはやらなくても動くみたいだけど、公開鍵は authorized_keys ファイルに統合するのがベスト。
chmod 700 ~/.ssh/ && chmod 600 ~/.ssh/id_rsa && chmod 600 ~/.ssh/authorized_keys

この記事 いわく、

  • ~/.ssh/ ディレクトリ … パーミッション 700 (rwx——)
  • 秘密鍵(普通は id_rsa)… パーミッション 600 (rw——-) or 400 (r——–)
  • authorized_keys ファイル … パーミッション 600 (rw——-) or 400 (r——–)

に設定されている必要があるそうなので、上のコマンドを全部実行すれば正しいパーミッションになる(はず)
SSH なにもわからない…

Sponsored Link
Sponsored Link
Linux
tsukumiをフォローする
Sponsored Link
つくみ島だより

コメント