# 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
# 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
(