このエントリーをはてなブックマークに追加

GPG キーの移動方法

少し前に GitHub で GPG 署名がサポートされたため、さっそく使っているのですが、他のマシンに GPG キーを移動する方法を調べてみました。

OS X の場合は、brew install gpp2 して、gpg2 コマンドを使ったほうがよいわけですが、次のようになります。

移行元のマシンで実行

$ email=< メールアドレス >
$ name=< ファイル名 >
$ gpg2 -a --export $email > $name-public-gpg.key
$ gpg2 -a --export-secret-keys $email > $name-secret-gpg.key
$ gpg2 --export-ownertrust > $name-ownertrust-gpg.txt

移行先のマシンで実行

$ email=< メールアドレス >
$ name=< ファイル名 >
$ gpg2 --import $name-secret-gpg.key
$ gpg2 --import-ownertrust $name-ownertrust-gpg.txt
$ gpg2 --list-keys
...

こんな感じであっさりとできました。

あと、都度リポジトリで GPG の設定をするのはめんどくさいので、次のようなシェルスクリプトを書いて使っています。


#!/bin/sh

email=$1
if [ -z "$email" ]; then
email=$(git config user.email)
fi

gpg=gpg
if [ $(which gpg2) ]; then
gpg=gpg2
fi

gpg_pub_key=$($gpg --list-keys | grep -1 "< $email>"| grep -e "^pub")
gpg_pub_key_id=$(echo $gpg_pub_key | cut -d ' ' -f 2 | cut -d '/' -f 2)
if [ -z "$gpg_pub_key_id" ]; then
echo "Could not get gpg pub key - $gpg_pub_key_id"
exit 1
fi

git config --local gpg.program $gpg
git config --local user.signingkey $ggp_pub_key_id
git config --local commit.gpgsign true

このスクリプトでメールアドレスを省略された場合は、リポジトリ設定のメールアドレスを利用しているのでけっこう便利です。

コミット履歴に「Verified」と標示されるのは、少しかっこいいですよね!