EC2(Amazon Linux 2)の環境で"ssh -T git@github.bom"は通るのに"sudo git clone"がpermission deniedになる

最初に

わからなくて鍵作り直したりしていたら、1時間半くらい食われた。

やりたいこと

/var/www配下でgit cloneをしたい

発生している問題

GitのSSH対応を終えて、ssh -T git@github.comも正常に動くのに、sudo git cloneでpermission deniedが発生する

結論

SSH接続で使用する秘密鍵はコマンド実行ユーザーのものを使用するので、sudoでコマンドを実行したらrootユーザー用の秘密鍵を探しに行き、見つからないためエラーになった。

homeディレクトリ配下だと問題なくgit cloneできた。

そのため、wwwにec2-userの権限を与えて、www配下でgit cloneできる状態を作った。

$ chown ec2-user www
$ cd www
$ git clone [URL]

手順の振り返り

# Gitをインストール
$ echo 'y' | sudo yum update
$ echo 'y' | sudo yum install git

# GitのSSH設定(*1の記事を参考)
$ ssh -T git@github
Enter passphrase for key '/home/ec2-user/.ssh/github': パスフレーズ入力
Hi kaminotsukai! You've successfully authenticated, but GitHub does not provide shell access.

# /var/wwwを作成
$ cd /var && mkdir www && cd www

# git clone
$ git clone [SSH用のリポジトリURL]
fatal: could not create work tree dir 'ec-site': Permission denied << あれ!?

# sudoで試してみる
$ sudo git clone [SSH用のリポジトリURL]
Warning: Permanently added 'github.com' (RSA) to the list of known hosts.
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

...

*1: お前らのSSH Keysの作り方は間違っている - Qiita

*2: nginx - なぜWebデータを/var/wwwに置かないといけないのか?|teratail

余談

# 秘密鍵の所有者をrootに変更してみる
$ sudo chown root ~/.ssh/github

# ec2-userがsshコマンドを実行しているのに、ユーザーが所有する鍵が存在しないのでエラーになった
$ ssh -T git@github.com
Load key "/home/ec2-user/.ssh/kami-github": Permission denied
Permission denied (publickey).

# 秘密鍵の所有者をec2-userに戻す
$ sudo chown ec2-user ~/.ssh/github

# 繋がった
$ ssh -T git@github.com
Enter passphrase for key '/home/ec2-user/.ssh/kami-github': 
Hi kaminotsukai! You've successfully authenticated, but GitHub does not provide shell access.