タイトルがめちゃくちゃ長いんですが、要は新しい 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 なにもわからない…
コメント