diff --git a/bin/startagent b/bin/startagent index 06d1914..91a8cbe 100755 --- a/bin/startagent +++ b/bin/startagent @@ -79,19 +79,21 @@ check_token(){ # defined here also, to work also in environments, where functions.sh couldn't be sourced [ -z "${P11M:+x}" ] && { P11M=$PKCS11_MODULE; export P11M; } - local tmppubkey="${XDG_RUNTIME_DIR}/token.pub" # If DISPLAY is set, ssh-add calls ssh-askpass, and if its in remote-terminal, it wont work # So remember and unset DISPLAY, and set it at the end again, if it was set before [ $DISPLAY ] && local DISPLAY_ORIG=$DISPLAY - [ $DISPLAY ] && logdebug "unset DISPLAY: $DISPLAY" + [ $DISPLAY ] && logtrace "unset DISPLAY: $DISPLAY" [ $DISPLAY ] && unset DISPLAY # Write public keys of all in agent stored keys to a temporary file + local tmppubkey="$(mktemp -p ${XDG_RUNTIME_DIR} pubkey.XXXXXX.pub)" + logtrace "tmppubkey: $tmppubkey" loginfo "$(ssh-add -L > $tmppubkey)" # Check if public-keys in tmppubkey are working. They are not working, if you removed and add back hardware-token. - loginfo "$(ssh-add -T ${tmppubkey} || { ssh-add -e $P11M; set -x; ssh-add -s $P11M; } )" - loginfo "$(ssh-add -l)" - [ $DISPLAY_ORIG ] && logdebug "reset DISPLAY=$DISPLAY_ORIG" + loginfo "$(ssh-add -T ${tmppubkey}|| { ssh-add -e $P11M; ssh-add -s $P11M; } )" + logdebug "$(rm "${tmppubkey}")" + loginfo "$(ssh-add -l )" + [ $DISPLAY_ORIG ] && logtrace "reset DISPLAY=$DISPLAY_ORIG" [ $DISPLAY_ORIG ] && export DISPLAY=$DISPLAY_ORIG }