Make gpg-agent and ssh-agent work with each other
This commit is contained in:
parent
fcab2a1713
commit
1622abb830
@ -3,6 +3,17 @@ GPG
|
|||||||
|
|
||||||
Provides for an easier use of [GPG][1] by setting up [gpg-agent][2].
|
Provides for an easier use of [GPG][1] by setting up [gpg-agent][2].
|
||||||
|
|
||||||
|
### SSH
|
||||||
|
|
||||||
|
To enable OpenSSH Agent protocol emulation, and make `gpg-agent` a drop-in
|
||||||
|
replacement for `ssh-agent`, add the following line to
|
||||||
|
*~/.gnupg/gpg-agent.conf*:
|
||||||
|
|
||||||
|
enable-ssh-support
|
||||||
|
|
||||||
|
When OpenSSH Agent protocol emulation is enabled, this module will load the SSH
|
||||||
|
module for additional processing.
|
||||||
|
|
||||||
Authors
|
Authors
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
@ -10,19 +10,32 @@ if (( ! $+commands[gpg-agent] )); then
|
|||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Set the default path to the gpg-agent-info file.
|
# Set the default paths to gpg-agent files.
|
||||||
_gpg_agent_info="$HOME/.gpg-agent-info"
|
_gpg_agent_conf="$HOME/.gnupg/gpg-agent.conf"
|
||||||
|
_gpg_agent_env="$TMPDIR/gpg-agent.env"
|
||||||
|
|
||||||
# Start gpg-agent if not started.
|
# Start gpg-agent if not started.
|
||||||
ps -U "$USER" -o ucomm | grep -q gpg-agent \
|
if ! ps -U "$USER" -o ucomm | grep -q gpg-agent; then
|
||||||
|| gpg-agent --daemon >! "$_gpg_agent_info"
|
eval "$(gpg-agent --daemon | tee "$_gpg_agent_env")"
|
||||||
|
else
|
||||||
# Export environment variables.
|
# Export environment variables.
|
||||||
|
source "$_gpg_agent_env" 2> /dev/null
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Inform gpg-agent of the current TTY for user prompts.
|
||||||
export GPG_TTY="$(tty)"
|
export GPG_TTY="$(tty)"
|
||||||
source "$_gpg_agent_info"
|
|
||||||
|
# Integrate with the SSH module.
|
||||||
|
if grep 'enable-ssh-support' "$_gpg_agent_conf" &> /dev/null; then
|
||||||
|
# Override the ssh-agent environment file default path.
|
||||||
|
_ssh_agent_env="$_gpg_agent_env"
|
||||||
|
|
||||||
|
# Load the SSH module for additional processing.
|
||||||
|
pmodload 'ssh'
|
||||||
|
fi
|
||||||
|
|
||||||
# Clean up.
|
# Clean up.
|
||||||
unset _gpg_agent_info
|
unset _gpg_agent_{conf,env}
|
||||||
|
|
||||||
# Disable GUI prompts inside SSH.
|
# Disable GUI prompts inside SSH.
|
||||||
if [[ -n "$SSH_CONNECTION" ]]; then
|
if [[ -n "$SSH_CONNECTION" ]]; then
|
||||||
|
Reference in New Issue
Block a user