Panda Noir

JavaScript の限界を究めるブログでした。最近はいろんな分野を幅広めに書いてます。

仕事の日報を暗号化してgitリポジトリとして管理する (EC2サーバーへのアップロードも)

仕事で日報を6年ほど書いてるんですが、ずっとある悩みがありました。それが 「クラウドにバックアップできない」 というものです。githubへアップロードするのは、社外秘情報などを含んでいるため、たとえプライベートリポジトリであっても気が引けます。

しかし git-remote-gcrypt というツールを見つけて、この問題が一気に解決しました。今回は 安全にgitリポジトリをサーバーへアップロードする方法 を紹介します。

git-remote-gcryptを使えばgitリポを暗号化してアップロードできる

git-remote-gcrypt は、push/pull する際に暗号化/復号を行うようにしてくれるツール です。 git remote add origin gcrypt://ssh/host/path/to/repo.git のようにして、gcrypt経由でリモートリポジトリとやり取りするよう設定するだけで、そのリモートへpushする時には暗号化、pullする時には復号するようにしてくれます。

git-remote-gcryptはgitリモートとのやり取りの時に暗号化/復号するだけなので、 それ以外のgit操作は普通にすることができます。

gitリポジトリを暗号化してpushするまでの流れ

サーバーの準備

GitHubもリモートとして使えます。いつも通り空のリポジトリを作ればOKです。

クライアントの準備

  1. git-remote-gcrypt をインストール brew install git-remote-gcrypt
  2. GPGのセットアップ
  3. user.signingkeyのセットと、gpg.program=/opt/homebrew/bin/gpg の準備
  4. gitリモートを設定 git remote origin gcrypt::git@github.com:{username}/{repository}.git
  5. あとはいつもどおりgit操作をする

これで、暗号化されてからサーバーへpushされるようになります。

暗号化されたgitリポジトリのクローン方法

クローン方法はめっちゃ簡単です。

  1. GPGのセットアップ/sshのセットアップを済ませる
  2. git clone gcrypt::git@github.com:{username}/{repository}.git

これだけです。