menu-icon

GitHubにデプロイ専用の鍵を登録する

本番環境にgithub経由でデプロイするための、読み取り専用のデプロイキーを登録する方法のメモです。

秘密鍵・公開鍵の作成

サーバー上で秘密鍵、公開鍵を作成します。

まず、デプロイユーザーのホームディレクトリ下の .ssh/ の中を見て、id_rsa, id_rsa.pub が存在しないことを確認します(ディレクトリ自体なければ確認不要です)。

ls ~/.ssh

次に、以下を実行して、鍵を生成します(メールアドレスの部分は変更してください)。鍵の保存ディレクトリ、パスフレーズを聞かれますが、そのままEnter連打で問題ないです。

$ ssh-keygen -t rsa -b 4096 -C "hogehoge@tdomy.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/tdomy/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/tdomy/.ssh/id_rsa.
Your public key has been saved in /home/tdomy/.ssh/id_rsa.pub.

秘密鍵 id_rsa, 公開鍵 id_rsa.pub が作成されたこと確認します。

$ ls ~/.ssh
id_rsa  id_rsa.pub

Githubへの登録には公開鍵の中身が必要なので、出力してコピーしておきます。

$ cat ~/.ssh/id_rsa.pub

Githubへの公開鍵の登録

作成した、公開鍵をGithubにデプロイ用の鍵として登録します。

デプロイ対象のリポジトリの [ Settings ] タブから [ Deploy Keys ]を選択し、Deploy Keys画面を開き、上部の [ Add Deploy Key ] を押します。

すると、デプロイキーの登録画面が開きますので、Title欄に適当な識別名、Key欄に作成した公開鍵の中身を張り付けます。なお [Allow write access] にチェックをしないことで、読み取り専用の鍵となります。

入力が終わったら、 [Add Key] ボタンを押して登録します。

問題なければ、以下のように鍵が追加されます。

動作確認

サーバー上で以下を実行します。

$ ssh -T git@github.com

以下のように出力されれば疎通OKです(Warningは気にしなくても良いです)。

The authenticity of host 'github.com (52.69.186.44)' can't be established.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,52.69.186.44' (RSA) to the list of known hosts.
Hi tdomy/deployer! You've successfully authenticated, but GitHub does not provide shell access.

あとはcloneしたディレクトリ内で

$ git fetch
$ git reset --hard origin/master

とすれば、リモートの master ブランチと同一の内容になります。