# Start ssh agent for private key function _log() { xlog "[ssh-agent] $*" } _SSH_AGENT_NO_KEYS=1 _SSH_AGENT_NOT_RUNNING=2 for key in id_ecdsa id_rsa; do key_filename="$HOME/.ssh/$key" if [ -f "$key_filename" ]; then _log "SSH key: $key_filename" if is_wsl; then _log "WSL ON" if [ -z "$SSH_AUTH_SOCK" ]; then export SSH_AUTH_SOCK=$HOME/.ssh/ssh-agent.sock fi _log "SSH_AUTH_SOCK: $SSH_AUTH_SOCK" ssh-add -L &> /dev/null ssh_add_status=$? if [[ ! -S "$SSH_AUTH_SOCK" || $ssh_add_status -eq $_SSH_AGENT_NOT_RUNNING ]]; then _log "Starting ssh-agent" eval "$(ssh-agent -s -a "$SSH_AUTH_SOCK")" fi ssh-add -L &> /dev/null ssh_add_status=$? if [[ $ssh_add_status -eq $_SSH_AGENT_NO_KEYS ]]; then _log "Adding SSH key to agent" ssh-add "$key_filename" fi else eval "$(keychain --eval --quiet --agents ssh $key)" fi break fi done