同じ内容の記事が既にありますが自分用の備忘録です.
macOS + Fishでの設定手順です.
$ brew install gnupg pinentry-mac gpg-agent
$ gpg --version
gpg (GnuPG) 2.2.5
libgcrypt 1.8.2
...
$ vi alice_gpg.txt
Key-Type: RSA
Subkey-Type: RSA
Key-Length: 4096
Subkey-Length: 4096
Expire-Date: 0
Name-Real: alice
Name-Email: alice@example.com
Name-Comment: alice gpg key
Passphrase: mypassphrase
%commit
%echo done
$ gpg --gen-key --batch alice_gpg.txt
$ gpg --list-keys alice
$ gpg --armor --export XXXXXXXXXXXXX | pbcopy
pbcopy
でクリップボードにキーが保存されているので、GitHub等にキーを登録します.
キーを削除したいときは以下の手順で、secret
から削除します.
$ gpg --list-keys alice
$ gpg --delete-secret-key alice
$ gpg --delete-key alice
Fishでの設定
自分の環境はFishで使ってるので以下の感じで初期化してます.
~/.config/fish/conf.d/gpg.fish
# Launch GPG Agent or connect to it
set -x GPG_TTY (tty)
export GPG_AGENT_INFO="$HOME/.gnupg/S.gpg-agent:0:1"
if [ ! (pgrep -x -u $USER "gpg-agent" | head -1) ]
set -el DISPLAY
echo "Invoking gpg-agent"
gpg-connect-agent /bye
end
macOS だとpinentry-curses
で日本語使えない
HomeBrewでインストールしたものは日本語は使えませんでした、
多分自力でビルドすれば多分いけますが、ここは大人しくbrew install pinentry-mac
で済ませましょう.
pinentry-macに切り替える
~/.gnupg/gpg-agent.conf
use-standard-socket
pinentry-program /usr/local/bin/pinentry-mac
gpg-agent
が起動していると設定が反映されないので、反映されない場合は一旦終了してください.
gpgconf --kill gpg-agent
Gitで使う
どのキーを利用するかと、デフォルトで署名するようにします.
自分の場合、リポジトリ毎に管理したいので --global
は付けずにやっています.
git config user.signingkey XXXXXXXXXXXXXXXX
git config commit.gpgsign true