経緯
ec2にアプリをデプロイするためにgitをインストールし、githubからリポジトリをクローンしようと思ったのですが、githubのssh設定でつまづいたため記事として残しておきます。
結論
ssh接続のための鍵はroot(sudo)で作成する
やったこと
1. ec2にssh接続
$ ssh -i {ec2に接続するための鍵} ec2-user@{ec2のpublicIP}
2. gitインストール
$ sudo yum install git
3. githubにssh接続するための鍵を作成する
$ ssh-keygen -t ed25519 -C {自分のメールアドレス}
3回ほど質問されますが、全てEnterを押せばOKです
これで~/.ssh/id_ed25519(秘密鍵)と~/.ssh/id_ed25519.pub(公開鍵)が生成されます
4.githubに公開鍵を登録する
https://github.com/settings/ssh/new
こちらから公開鍵の登録ができます。
Titleには好きな文字列を、Keyには公開鍵(今回だとid_ed25519.pub)の内容をコピーして貼り付けます。
5.SSH接続の確認
$ ssh -T git@github.com
このコマンドを叩いて下が返ってくれば成功です
Hi (account名)! You've successfully authenticated, but GitHub does not provide shell access.
6.リモートリポジトリをクローン(ここで詰まった)
$ git clone git@github.com:{ユーザ名}/{リポジトリ名}.git
SSHの接続設定も完了しているので本来であればリポジトリのクローンができるはずです。
しかし、実際に返ってきたのは以下でした...
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
解決策
gitのドキュメントを読んでみる
https://docs.github.com/en/authentication/troubleshooting-ssh/error-permission-denied-publickey
上のリンクに次のような記述がありました。
要はSSH鍵を作成するときにsudoを使ってしまうと、gitコマンドを使うときに毎回sudoをつけないといけなくなるよということでした。
しかしながら、SSH鍵を作成するときにsudoをつけた覚えはありません。
ということで、逆にsudoつけて鍵作ったらどうなるんだろうと試してみたところうまくいきました!
$ sudo ssh-keygen -t ed25519 -C {自分のメールアドレス}
git cloneの時もsudoをつけてあげます
$ sudo git clone git@github.com:{ユーザ名}/{リポジトリ名}.git
まとめ
SSH鍵生成のときにsudoを使うことで無事githubとの接続ができました。
(gitのコマンドを使うときに毎回sudoをつけないといけない制約はありますが...)