X-Git-Url: https://arthur.barton.de/gitweb/?a=blobdiff_plain;f=default_plugins%2Fssh%2Fssh.zshrc;h=1afc7f469116c1996f816127ca176add79dff17a;hb=2ddebb388326d38d99b04303397ecadc185ccc58;hp=ce2a877d086258ae168b3b93e1e6994989357c51;hpb=713487e5c52d0e7d997927b1bce0b526cbd95d29;p=ax-zsh.git diff --git a/default_plugins/ssh/ssh.zshrc b/default_plugins/ssh/ssh.zshrc index ce2a877..1afc7f4 100644 --- a/default_plugins/ssh/ssh.zshrc +++ b/default_plugins/ssh/ssh.zshrc @@ -4,6 +4,17 @@ # Make sure that "ssh(1)" is installed (( $+commands[ssh] )) || return +# Load SSH keys into the SSH agent, when one is running and doesn't have +# any keys already. Not having an SSH agent running at all is ok as well and +# results in an "success" exit code (0) as well. +ssh-autoadd() { + [[ -z "$SSH_AUTH_SOCK" ]] && return 0 + ssh-add -l >/dev/null && return 0 + [[ $? -eq 2 ]] && return 2 + [[ "$1" = "-v" ]] && echo "SSH agent is running, but has no identities." + ssh-add +} + _ax_ssh_prompt() { [[ -n "$SSH_CLIENT" ]] || return 1 return 0 @@ -16,8 +27,21 @@ ax_hostname_prompt_functions=($ax_hostname_prompt_functions _ax_ssh_prompt) # file becomes invalid when the session has been disconnected. [[ ! -r "$SSH_AUTH_SOCK" ]] && unset SSH_AUTH_SOCK +# Look for common socket locations ... +if [[ -z "$SSH_AUTH_SOCK" ]]; then + for s ( + /mnt/c/Local/$LOGNAME/ssh-agent.sock + ); do + if [[ -r "$s" ]]; then + export SSH_AUTH_SOCK=$s + break + fi + done + unset s +fi + # Save SSH environment when available: -if [[ -n "$SSH_AUTH_SOCK" ]]; then +if [[ -n "$SSH_AUTH_SOCK" && -d "$XDG_RUNTIME_DIR" ]]; then # Save current environment when no state exists or is invalid. if [[ -r "$XDG_RUNTIME_DIR/ssh-env.sh" ]]; then (