Using gpg-agent for GPG and SSH
This is my (melmothX's) setup for gpg-agent
 apt-get install gnupg-agent
Check if ssh-agent is running, locate where is started (in .xinitrc if you don't use any *dm), kill it and disabled it.
I don't want to mess with the agent too much, and I also want to survive between X restarting. So this is the relevant part of my ~/.xinitrc
# define a start gpg agent function
startgpgagent () {
    # check if it's running. if it is, complains and don't start it again
    if ps -u $(whoami) | grep -q gpg-agent; then
    echo "gpg-agent is running! wtf??"
    else
    gpg-agent --daemon --enable-ssh-support \
        --write-env-file "${HOME}/.gpg-agent-info" \
        --log-file "${HOME}/.my-gpg-agent.log"
    fi
}
if [ -f "${HOME}/.gpg-agent-info" ]; then
    . "${HOME}/.gpg-agent-info"
    # is it running? if not, start it 
    if ! ps -u $(whoami) | grep -q -e "$SSH_AGENT_PID.*gpg-agent"; then
    echo "starting gpg-agent"
    rm "${HOME}/.gpg-agent-info"
    startgpgagent
    fi
else
    startgpgagent
fi
# export the variables
. "${HOME}/.gpg-agent-info"
export GPG_AGENT_INFO
export SSH_AUTH_SOCK
export SSH_AGENT_PID
if ! ps -u $(whoami) | grep -q emacs ; then 
    echo "starting emacs"
    emacs --daemon
    else 
    echo "emacs already running"
fi
# emacs is supposed to survive the X sessions, so try to update the variables
emacsclient -e "(setenv \"GPG_AGENT_INFO\" \"$GPG_AGENT_INFO\")"
emacsclient -e "(setenv \"SSH_AUTH_SOCK\" \"$SSH_AUTH_SOCK\")"
emacsclient -e "(setenv \"SSH_AGENT_PID\" \"$SSH_AGENT_PID\")"
exec openbox-session
Then in ~/.bashrc we add this section:
### GPG agent config
if [ -f "${HOME}/.gpg-agent-info" ]; then
    . "${HOME}/.gpg-agent-info"
    export GPG_AGENT_INFO
    export SSH_AUTH_SOCK
    export SSH_AGENT_PID
fi
# this avoid the passwd being asked on the console while in X
echo UPDATESTARTUPTTY | gpg-connect-agent 2>/dev/null > /dev/null
GPG_TTY=$(tty)
export GPG_TTY
### end
That's it.
Important: the first time you run ssh-add you will be queried to provide a passphrase to store the ssh-key. It's different from the SSH passphrase and it has the purpose to safely store the secret key in ~/.gnupg/private-keys-v1.d
NOTE: If you followed the old tutorial, please remove or neutralize ~/.bash_logout Now the daemon is killed only at the shutdown by the OS, not when logging out.