Skip to content
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 18 additions & 5 deletions ssh-find-agent.sh
Original file line number Diff line number Diff line change
Expand Up @@ -58,10 +58,13 @@ sfa_set_path() {
if [[ -n "$_TMPDIR_OVERRIDE" ]]; then
sfa_path=("$_TMPDIR_OVERRIDE")
else
# Add ~/.ssh/agent to support newer OpenSSH versions
# See: https://github.com/openssh/openssh-portable/commit/80162f9d7e7eadca4ffd0bd1c015d38cb1821ab6
local ssh_agent_dir="${HOME}/.ssh/agent"
if [[ -n "$TMPDIR" ]]; then
sfa_path=("/tmp" "$TMPDIR")
sfa_path=("/tmp" "$TMPDIR" "$ssh_agent_dir")
else
sfa_path=("/tmp")
sfa_path=("/tmp" "$ssh_agent_dir")
fi
fi
fi
Expand All @@ -81,9 +84,10 @@ sfa_debug() {
sfa_find_all_agent_sockets() {
_ssh_agent_sockets=($(
find "${sfa_path[@]}" -maxdepth 2 -type s -name agent.\* \
-o -name S.gpg-agent.ssh -o -name ssh -o -regex '.*/ssh-.*/agent..*$' \
-o -name S.gpg-agent.ssh -o -name ssh -o -name 's.*.agent.*' \
-o -regex '.*/ssh-.*/agent..*$' \
2>/dev/null | grep -E \
'/ssh-.*/agent.*|/gpg- .*/S.gpg-agent.ssh|/keyring-.*/ssh$|.*/ssh-.*/agent..*$'
'/ssh-.*/agent.*|/gpg- .*/S.gpg-agent.ssh|/keyring-.*/ssh$|.*/ssh-.*/agent..*$|s\..*\.agent\..*'
))

sfa_debug "${_ssh_agent_sockets[@]}"
Expand Down Expand Up @@ -231,8 +235,17 @@ sfa_set_ssh_agent_socket() {
esac

# set agent pid - this is unreliable as the pid may be of the child rather than the agent
# Note: newer OpenSSH socket names (s.*.agent.*) don't contain the PID
if [ -n "$SSH_AUTH_SOCK" ]; then
export SSH_AGENT_PID=$(($(basename "$SSH_AUTH_SOCK" | cut -d. -f2) + 1))
local sock_basename
sock_basename=$(basename "$SSH_AUTH_SOCK")
# Only try to extract PID from old-style socket names (agent.*)
if [[ "$sock_basename" =~ ^agent\.([0-9]+)$ ]]; then
local pid_candidate="${BASH_REMATCH[1]}"
if [[ "$pid_candidate" =~ ^[0-9]+$ ]]; then
export SSH_AGENT_PID=$((pid_candidate + 1))
fi
fi
fi

return 0
Expand Down