更新日:
投稿日:
毎回パスワードを聞かれるのは面倒なのでkeychainを使って記憶させる。
| Env |
Ver |
| keychain |
2.8.5 |
| Ubuntu |
20.04.5 LTS |
| Env |
Ver |
| keychain |
2.8.5 |
| Ubuntu |
24.04.3 LTS |
sudo apt install keychain
.zshrcに次の行を追加。
keychain -q --nogui --agents ssh,gpg --quick <SSH秘密鍵のパス> <GPG鍵のkeyid>
GPG鍵のkeyidは以下で取得可能。
gpg --list-secret-keys --keyid-format=long
~/.keychain配下にホスト名でHOGE-shのようなファイルができているので、これを.zshrcから読み込む。内容的にはssh-agentとkeychainが疎通するための環境設定と思われる。
具体的には以下の内容を.zshrcに追記すればよい。
source $HOME/.keychain/`hostname`-sh
最終的な.zshrcの状態としては以下のようになっていればよい。
keychain -q --nogui --agents ssh,gpg --quick <SSH秘密鍵のパス> <GPG鍵のkeyid>
source $HOME/.keychain/`hostname`-sh
hostname-sh-gpgみたいなファイルも出来ているが私の環境ではこれを読み込むと上手く動かなかったので、このファイルは指定しないほうが良さそうに見えた。
.zshrcに以下を追記するとCUI側に出るようになる。
export GPG_TTY=$(tty)
gpg-agent.confに書く。
cat <<'EOF' | tee ~/.gnupg/gpg-agent.conf
###+++--- GPGConf ---+++###
default-cache-ttl 34560000
max-cache-ttl 34560000
EOF
- Warning: can't find DEADBEEF; skipping
上記が出た場合
~/.gnupg/gpg.confに対して以下の記述をすることで改善する。
keyid-format LONG
この設定をした後にkeychainに再ロードさせるには、gpg-agentを殺して.zshrcに書いたkeychainをもう一度実行するとうまくいく。
gpgconf --kill gpg-agent
keychain -q --nogui --agents ssh,gpg --quick <SSH秘密鍵のパス> <GPG鍵のkeyid>
.zshrcに以下を追記するとCUI側に出るようになる。
export GPG_TTY=$(tty)
- 2026-07-06: gpgキーが認識されないときに再履行する方法を追記
- 2026-06-04: パスフレーズをCUI側に出す方法と記憶させる方法を追記
- 2026-01-21: エージェントとの連携設定が漏れていたのを追記
- 2026-01-19: Ubuntu実機で確認したので、その結果を記事に反映し、記事を読みやすく改良