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.