diff --git a/shell/ssh b/shell/ssh index c89fe0a..3da6bb6 100755 --- a/shell/ssh +++ b/shell/ssh @@ -1,11 +1,33 @@ # start ssh agent, if no agent set if [[ -n "${XDG_RUNTIME_DIR}" && -z "${SSH_AUTH_SOCK}" ]]; then + # XDG should make this linux only + # macOS starts its own agent, so, doubly so + if ! pgrep -u "$USER" ssh-agent > /dev/null; then ssh-agent -t 24h > "${XDG_RUNTIME_DIR}/ssh-agent.env" fi + if [[ ! -S "${SSH_AUTH_SOCK}" ]] && [[ -f "${XDG_RUNTIME_DIR}/ssh-agent.env" ]]; then source "${XDG_RUNTIME_DIR}/ssh-agent.env" > /dev/null fi fi +# autoload keys if there's an agent +if [[ -n "${SSH_AUTH_SOCK}" ]]; then + if ! ssh-add -l > /dev/null; then + case "${OSTYPE}"; in + linux*) + # TODO: unsure yet + : + ;; + darwin*) + ssh-add -q --apple-load-keychain + ;; + *) + : + ;; + esac + fi +fi + # vim: ft=bash