UbuntuでSSHとGPGキーのパスフレーズを記憶させる
更新日:
投稿日:
投稿日:
毎回パスワードを聞かれるのは面倒なのでkeychainを使って記憶させる。
確認環境
WSL2
| Env | Ver |
|---|---|
| keychain | 2.8.5 |
| Ubuntu | 20.04.5 LTS |
実機
| Env | Ver |
|---|---|
| keychain | 2.8.5 |
| Ubuntu | 24.04.3 LTS |
手順
1. keychainのインストール
sudo apt install keychain
2. keychainの設定
.zshrcに次の行を追加。
keychain -q --nogui --agents ssh,gpg --quick <SSH秘密鍵のパス> <GPG鍵のkeyid>
GPG鍵のkeyidは以下で取得可能。
gpg --list-secret-keys --keyid-format=long
3. エージェント連携をシェル設定に書く
~/.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みたいなファイルも出来ているが私の環境ではこれを読み込むと上手く動かなかったので、このファイルは指定しないほうが良さそうに見えた。
トラブルシュート
GPGのキーが見つからないエラーが出る
- Warning: can't find DEADBEEF; skipping
上記が出た場合
~/.gnupg/gpg.confに対して以下の記述をすることで改善する可能性がある(この対策は不完全かもしれない
keyid-format LONG
GPGキーのパスフレーズのプロンプトがGUI側に出る
.zshrcに以下を追記するとCUI側に出るようになる。
export GPG_TTY=$(tty)
更新履歴
- 2026-01-21: エージェントとの連携設定が漏れていたのを追記
- 2026-01-19: Ubuntu実機で確認したので、その結果を記事に反映し、記事を読みやすく改良