この記事は最終更新日から1年以上が経過しています。情報が古くなっている可能性があります。
タイトルがめちゃくちゃ長いんだけど、要は新しい Linux (Ubuntu) に SSH で GitHub のリポジトリを clone しようとしたら、
$ git clone [email protected]:hogehoge/fugafuga.git
Cloning into 'fugafuga'...
sign_and_send_pubkey: signing failed for RSA "/home/user/.ssh/id_rsa" from agent: agent refused operation
[email protected]: 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 なにもわからない…
コメント