diff options
Diffstat (limited to 'bin/ssh-with-gpg')
| -rwxr-xr-x | bin/ssh-with-gpg | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/bin/ssh-with-gpg b/bin/ssh-with-gpg new file mode 100755 index 0000000..7ca0d67 --- /dev/null +++ b/bin/ssh-with-gpg @@ -0,0 +1,20 @@ +#!/usr/bin/env bash + +# For this to work, you also need to import the public key of any private key you want to use +# in the target server's pubring first. + +if [ -z "$1" ];then + printf "USAGE: %b TARGET [OPTIONS...]\\n" "$(basename "$0")" >&2 + exit 1 +fi + +TGT="$1" + +REMUID="$(ssh "$TGT" "id -u")" +ssh "$TGT" 'killall gpg-agent 2>/dev/null;rm -f /run/user/$(id -u)/gnupg/S.*' +if [ -z "$REMUID" ];then + printf "Cannot fetch user id from %b.\\n" "$TGT" >&2 + exit 2 +fi + +ssh -R "/run/user/${REMUID}/gnupg/S.gpg-agent":"/run/user/$(id -u)/gnupg/S.gpg-agent-extra" -o "StreamLocalBindUnlink=yes" "$TGT" "${@:2}" |
