本番環境のサーバに 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
」をクリックします。
Title
と Key
を入力するところがあるので、下記項目に必要なものを入力します。
- 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
の活用を検討してみてはいかがでしょうか?
コメント