mirror of
https://github.com/Matir/skel.git
synced 2026-05-25 21:19:09 -07:00
Compare commits
3 Commits
158d9f6e4e
...
claude/deb
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7444f5b97b | ||
|
|
c5e1157f47 | ||
|
|
6b50be84a9 |
@@ -113,13 +113,17 @@ _is_link_path() {
|
|||||||
|
|
||||||
_CANDIDATE=""
|
_CANDIDATE=""
|
||||||
|
|
||||||
# 1. If current environment has a valid socket that is NOT our link, it's a prime candidate (e.g. SSH forwarding).
|
# 1. If current environment has a valid socket that is NOT our link, it's a prime candidate
|
||||||
|
# (e.g. fresh SSH login: sshd sets SSH_AUTH_SOCK to the raw forwarded socket before ssh/rc
|
||||||
|
# rewrites it to the stable symlink; the shell inherits the original raw path).
|
||||||
if [ -S "${SSH_AUTH_SOCK:-}" ] && ! _is_link_path "${SSH_AUTH_SOCK}"; then
|
if [ -S "${SSH_AUTH_SOCK:-}" ] && ! _is_link_path "${SSH_AUTH_SOCK}"; then
|
||||||
_CANDIDATE="${SSH_AUTH_SOCK}"
|
_CANDIDATE="${SSH_AUTH_SOCK}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 2. If no candidate yet, or we're currently using the link, try to find the "real" system agent.
|
# 2. Only look for a system agent if the stable link is already broken. If the link is
|
||||||
if [ -z "${_CANDIDATE}" ] || _is_link_path "${SSH_AUTH_SOCK:-}"; then
|
# valid (e.g. a tmux pane where SSH_AUTH_SOCK points to our symlink which ssh/rc just
|
||||||
|
# updated to the forwarded socket), leave it alone — don't clobber it with a local agent.
|
||||||
|
if [ -z "${_CANDIDATE}" ] && [ ! -S "${_SSH_AUTH_LINK}" ]; then
|
||||||
_FOUND=""
|
_FOUND=""
|
||||||
if [ "$(uname)" = "Darwin" ]; then
|
if [ "$(uname)" = "Darwin" ]; then
|
||||||
_FOUND=$(launchctl getenv SSH_AUTH_SOCK 2>/dev/null)
|
_FOUND=$(launchctl getenv SSH_AUTH_SOCK 2>/dev/null)
|
||||||
@@ -143,8 +147,8 @@ if [ -z "${_CANDIDATE}" ] || _is_link_path "${SSH_AUTH_SOCK:-}"; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 3. Last resort: search common paths if we still don't have a valid candidate.
|
# 3. Last resort: search common paths if we still don't have a candidate and the link is broken.
|
||||||
if [ ! -S "${_CANDIDATE}" ]; then
|
if [ ! -S "${_CANDIDATE}" ] && [ ! -S "${_SSH_AUTH_LINK}" ]; then
|
||||||
_U=$(id -u)
|
_U=$(id -u)
|
||||||
for _p in "/run/user/${_U}/keyring/ssh" "/run/user/${_U}/ssh-agent.socket" "/run/user/${_U}/openssh_agent" "/run/user/${_U}/gnupg/S.gpg-agent.ssh"; do
|
for _p in "/run/user/${_U}/keyring/ssh" "/run/user/${_U}/ssh-agent.socket" "/run/user/${_U}/openssh_agent" "/run/user/${_U}/gnupg/S.gpg-agent.ssh"; do
|
||||||
if [ -S "${_p}" ] && ! _is_link_path "${_p}"; then
|
if [ -S "${_p}" ] && ! _is_link_path "${_p}"; then
|
||||||
|
|||||||
@@ -2,19 +2,19 @@
|
|||||||
|
|
||||||
# Roughly based on this article:
|
# Roughly based on this article:
|
||||||
# https://werat.github.io/2017/02/04/tmux-ssh-agent-forwarding.html
|
# https://werat.github.io/2017/02/04/tmux-ssh-agent-forwarding.html
|
||||||
|
#
|
||||||
|
# NOTE: this file is executed by sshd as a child process, NOT sourced by the
|
||||||
|
# user's shell. Any variable assignments or exports here have no effect on the
|
||||||
|
# shell environment the user will land in.
|
||||||
|
|
||||||
REMOTE_LINK="${HOME}/.ssh/ssh_auth_sock"
|
REMOTE_LINK="${HOME}/.ssh/ssh_auth_sock"
|
||||||
|
|
||||||
if [ -S "${SSH_AUTH_SOCK}" ] ; then
|
if [ -S "${SSH_AUTH_SOCK}" ] ; then
|
||||||
SSH_REMOTE_AUTH_SOCK="${SSH_AUTH_SOCK}"
|
|
||||||
export SSH_REMOTE_AUTH_SOCK
|
|
||||||
# Always update the symlink to the latest session's socket.
|
# Always update the symlink to the latest session's socket.
|
||||||
# This ensures that tmux (which uses the static path) always points to a
|
# This ensures that tmux (which uses the static path) always points to a
|
||||||
# current agent.
|
# current agent.
|
||||||
mkdir -p "$(dirname "${REMOTE_LINK}")"
|
mkdir -p "$(dirname "${REMOTE_LINK}")"
|
||||||
ln -sf "${SSH_AUTH_SOCK}" "${REMOTE_LINK}"
|
ln -sf "${SSH_AUTH_SOCK}" "${REMOTE_LINK}"
|
||||||
SSH_AUTH_SOCK="${REMOTE_LINK}"
|
|
||||||
export SSH_AUTH_SOCK
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# if stdin is a tty, don't do the cookie step
|
# if stdin is a tty, don't do the cookie step
|
||||||
|
|||||||
Reference in New Issue
Block a user