GitHub Logo

[GitHub]リポジトリに Deploy keys を登録してパスワードなしでアクセスする

本番環境のサーバに GitHub のリポジトリをクローンしたり、最新のソースを pull するときに、ユーザ ID とパスワードを毎回入力してアクセスしてました。

でも、それだと自分しか git コマンドを使うことができず、自分以外の人がサーバのメンテナンスをすることができなくなってしまうので、そうならないために、 GitHub のリポジトリに Deploy keys を登録して、登録した鍵を使ってリポジトリへのアクセス認証ができるようにしました。

その時の手順をまとめました。

秘密鍵と公開鍵を作成する

ssh-keygen コマンドを使って鍵を作成します。
GitHub に接続したいサーバにログインして下記コマンドを実行します。

$ ssh-keygen -t rsa -c [GitHubのアカウントのメールアドレス]

Generating public/private rsa key pair.
Enter file in which to save the key (/home/username/.ssh/id_rsa):  # ← 作成される場所。問題なければEnter。
Enter passphrase (empty for no passphrase):  # ← パスフレーズの入力。省略する場合はそのままEnter。
Enter same passphrase again:  # ← パスフレーズの再入力。省略した場合はそのままEnter。

通常のユーザで実行すると「 /home/[ユーザ] 」パスに「 .ssh 」というディレクトリが作成され、鍵が作成されます。
su した後で実行すると「 /root/ 」パスに「 .ssh 」というディレクトリが作成され、鍵が作成されます。

# ssh-keygen -t rsa -c [GitHubのアカウントのメールアドレス]

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):  # ← 作成される場所。問題なければEnter。
Enter passphrase (empty for no passphrase):  # ← パスフレーズの入力。省略する場合はそのままEnter。
Enter same passphrase again:  # ← パスフレーズの再入力。省略した場合はそのままEnter。

通常ユーザで実行するか su で実行するかは、ドキュメントルートなどへのアクセス権などを確認した上で判断してください。

通常ユーザがドキュメントルートなどへのアクセス権がない場合、ドキュメントルートでの git clone コマンドが実行できないので、 su で鍵を作成した方が良いです。

Deploy keys に鍵の情報を登録する

鍵が作成できたら、「 id_rsa.pub 」を開いて、コピーします。

GitHub の各リポジトリのメニューの「 Settings 」をクリックします。

すると、画面の左側に「 Deploy key 」というメニューがあるので、そこをクリックして、「 Add deploy key 」をクリックします。

TitleKey を入力するところがあるので、下記項目に必要なものを入力します。

  • Title : 自分がわかりやすい名前
  • Key : 先ほどコピーしたid_rsa.pub
  • Allow write access : 書き込みが必要かどうか。今回は不要。

Add key 」をクリックして正常に登録できれば、 Deploy key の登録は成功です。

サーバからアクセスする

先ほど、鍵を作成したサーバから下記コマンドを実行して、アクセスできるか確認します。

git clone git@github.com:username/yourrepo.git

正常に clone されれば、アクセス成功です。

git pull する場合は、 git clone したリポジトリのディレクトリの中で、

git pull

すれば、リポジトリから pull してくれます。

最後に

本番環境構築する際に、今までは自分のアカウント情報を設定して git コマンドを利用していましたが、 Deploy keys を利用できるようになったので、サーバのメンテナンスなどを自分以外の人に依頼することもできるようになりました。

これにより、開発メンバーと運用メンバーとで役割分担などもやりやすくなると思うので、チームで開発しているのであれば、 Deploy keys の活用を検討してみてはいかがでしょうか?

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です