diff --git a/ssh-askpass b/ssh-askpass index 4da060d..57e65a4 100755 --- a/ssh-askpass +++ b/ssh-askpass @@ -1,8 +1,34 @@ #!/bin/sh # vim: set sw=4 ts=4 sts=4 et : +pinentry() { + if [ -n "${TMUX}" ] && [ -z "${DISPLAY}" ]; then + # We're running in a TMUX pane, launch a new window to handle + # passphrase/confirmation prompt + unset t1 t2 + mkfifo "${t1:=$(mktemp -u)}" + mkfifo "${t2:=$(mktemp -u)}" + tmux new-window sh -c "exec pinentry -T \$(tty) < '$t1' > '$t2'" + cat > "$t1" + cat "$t2" + rm -f "$t1" "$t2" + return + elif [ -n "${SSH_TTY}" ]; then + # We're in an SSH session, so prompt for the passphrase on the + # SSH client terminal + set -- -T "${SSH_TTY}" "$@" + elif [ -t 0 ]; then + set -- -T $(tty) "$@" + elif [ -t 1 ]; then + set -- -T $(tty <&1) "$@" + elif [ -t 2 ]; then + set -- -T $(tty <&2) "$@" + fi + command pinentry "$@" +} + prompt_confirm() { - result=$(pinentry -T $(tty) -g <