From 3049391a4f0a7de8e4366dd164b48b6be9353e17 Mon Sep 17 00:00:00 2001 From: lachtan Date: Fri, 19 Sep 2025 05:59:07 +0200 Subject: [PATCH] Better version ssh-agent for WSL --- rc/ssh-agent.sh | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/rc/ssh-agent.sh b/rc/ssh-agent.sh index b219d91..b0a4958 100644 --- a/rc/ssh-agent.sh +++ b/rc/ssh-agent.sh @@ -1,20 +1,40 @@ # 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 - if [ ! -S "$SSH_AUTH_SOCK" ]; then + _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 - if ! ssh-add -L > /dev/null; then + 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