gpg-agentとgnome-keyringを導入する
目標
またはログインしただけで開錠できる
環境
systemdがinitシステムとして導入され、user serviceも動作している前提 Desktop Environmentを使っている
Display Managerを使っていない
code:shell-session
# pacman -S gnome-keyring
GNOME-keyringのssh-agent無効化
systemctl --user disable gcr-ssh-agent
cp /etc/xdg/autostart/gnome-keyring-ssh.desktop .config/xdg/autostart/gnome-keyring-ssh.desktop
.config/xdg/autostart/gnome-keyring-ssh.desktopファイル末尾にHidden=Trueを書く
日本語ArchWikiには/dev/nullで/etc/xdg/autostart/gnome-keyring-ssh.desktopを上書きせよとあって過激
lookup順序は$XDG_CONFIG_HOME/xdg/autostartのほうが優越されているはずなので、同名で保存しればoverrideできるハズ
gnomekeyringの開錠を楽にしたい
Display Managerを使っている場合は不要?
/etc/pam.d/passwdの末尾にpassword optional pam_gnome_keyring.soを追記
/etc/pam.d/loginのauth末尾にauth optional pam_gnome_keyring.soを追記
/etc/pam.d/loginのsession末尾にsession optional pam_gnome_keyring.so auto_startを追記
GPGの設定
code:~/.gnupg/gpg-agent.conf
default-cache-ttl 3600
pinentry-program /usr/bin/pinentry-gnome3
書いたら、gpg-connect-agent reloadagent /byeを実行してreloadを掛ける
環境変数のoverride
code:~/.bash_profile
unset SSH_AGENT_PID
export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"
fi
systemd.environment-generatorや$XDG_CONFIG_HOME/environment.d/*.confなどを使っても実現可能だが、unsetが動作しなさそうなど、機能がショボいのでログインシェルにつっこんだ
SSHとの連携
GPG鍵を選ぶ
code:shell-session
gpg --list-keys --with-keygrip
から[A]とある鍵のKeygripを.gnupg/sshcontrolに書き込む
たぶんこれで動くんじゃないかなあと思う
参考