先日、AWS上のEC2インスタンスにGithub上のリポジトリをcloneする場面がありました。このサーバーは各種メンテナンス用のサーバーで、このサーバーからLaravelのコマンドを実行する必要があったのです。
ただ、このリポジトリはPrivateリポジトリであるので、httpsで認証するか、SSHでアクセスをする必要があります。毎回認証をするのはめんどくさいので、SSHでcloneをしたいのですが、自分以外も触ることがあるので、自分のアカウントに登録したSSHキーをサーバーに置いておくと、自分のprivateリポジトリも全て見えてしまうので、どうしたものかと考えていたのですが、Githubではリポジトリ単位でSSHキーを登録できる機能があるようでしたので、その時に行なった作業をまとめます。
1. SSHキーの作成
この作業はEC2インスタンス上で行います。
まず、SSHのキーを作成します。ファイル名やパスフレーズはお好みで。
$ ssh-keygen -t ed25519 -C "your_email@example.com"
> Generating public/private ed25519 key pair.
> Enter a file in which to save the key (/home/you/.ssh/id_ed25519): [Press enter]
> Enter passphrase (empty for no passphrase): [Type a passphrase]
> Enter same passphrase again: [Type passphrase again]
2. キーの登録
キーを登録するリポジトリを開いて、タブメニューの「Settings」をクリックします。

続いて、左メニューの「Deploy Keys」を開きます。

右上の「Add deploy key」をクリックし、出てきた画面に先ほど作ったキーの公開鍵(~/.ssh/id_ed25519.pub
の内容)を入力します。

これで、EC2インスタンス上からSSHを使ってリポジトリをcloneできるようになりました!
まとめ
Githubのリポジトリ単位でSSHのキーを登録する方法をまとめました。今回はEC2インスタンス上にcloneするために設定を行いましたが、CircleCIなどを回す時のソースのclone時などにも使えますね!(Deploy keyという名前だから、本来の使い方はそっちかも)
以上!