From 7d934e8e14c5f65908133f0351bb188fb4ee39a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Geoffrey=20=E2=80=9CFrogeye=E2=80=9D=20Preud=27homme?= Date: Thu, 20 Aug 2020 09:31:36 +0200 Subject: [PATCH] GPG as SSH agent Did you know? It's the second time I'm doing this change because my SSD crashed and I DIDN'T PUSH. Rrrrr --- config/shell/shenv | 54 +++++++++++++++++++++++++++------------------- 1 file changed, 32 insertions(+), 22 deletions(-) diff --git a/config/shell/shenv b/config/shell/shenv index 8fb6dc5..f52834d 100644 --- a/config/shell/shenv +++ b/config/shell/shenv @@ -10,27 +10,6 @@ export EDITOR=nvim export VISUAL=nvim export BROWSER=firefox -# Load ssh-agent... ONCE - -SSH_ENV="$HOME/.ssh/environment" - -start_agent() { - ssh-agent > "${SSH_ENV}" - chmod 600 "${SSH_ENV}" - . "${SSH_ENV}" > /dev/null -} - -if [ -f "${SSH_ENV}" ] -then - . "${SSH_ENV}" > /dev/null - if [ ! -d "/proc/${SSH_AGENT_PID}" ] || [ "$(cat "/proc/${SSH_AGENT_PID}/comm")" != "ssh-agent" ] - then - start_agent - fi -else - start_agent -fi - direnv() { # environment variable name, path export "$1"="$2" mkdir -p "$2" @@ -127,4 +106,35 @@ prependpath "$HOME/.config/scripts" prependpath "$HOME/.termux/bin" ) -# For superseding commands with better ones if they are present + +if grep -q enable-ssh-support "$GNUPGHOME/gpg-agent.conf" 2> /dev/null +then + # Use GPG as SSH agent + unset SSH_AGENT_PID + if [ "${gnupg_SSH_AUTH_SOCK_by:-0}" -ne $$ ]; then + export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)" + fi + export GPG_TTY=$(tty) + gpg-connect-agent updatestartuptty /bye >/dev/null + +else + # Start regular SSH agent if not already started + SSH_ENV="$HOME/.ssh/environment" + + start_agent() { + ssh-agent > "${SSH_ENV}" + chmod 600 "${SSH_ENV}" + . "${SSH_ENV}" > /dev/null + } + + if [ -f "${SSH_ENV}" ] + then + . "${SSH_ENV}" > /dev/null + if [ ! -d "/proc/${SSH_AGENT_PID}" ] || [ "$(cat "/proc/${SSH_AGENT_PID}/comm")" != "ssh-agent" ] + then + start_agent + fi + else + start_agent + fi +fi