1
0
Fork 0
mirror of synced 2024-06-02 23:31:11 -04:00
zimfw/modules/ssh/init.zsh
2017-04-24 04:31:43 -04:00

53 lines
1.5 KiB
Bash

#
# sets up ssh-agent
#
# The GNOME Keyring daemon will cause issues with ssh-agent
# Please make sure to disable the GNOME Keyring SSH intergration if you wish to use ssh-agent
# This can be done with the following commands:
# mkdir ~/.config/autostart
# cp /etc/xdg/autostart/gnome-keyring-ssh.desktop ~/.config/autostart/ &&
# printf '%s\n' 'Hidden=true' >> ~/.config/autostart/gnome-keyring-ssh.desktop
# don't do anything unless we can actually use ssh-agent
if (( ! ${+commands[ssh-agent]} )); then
return 1
fi
# use a sane temp dir; creating 1k ssh-* files in /tmp is crazy
if [[ ${TMPDIR} ]]; then
local ssh_env=${TMPDIR}/ssh-agent.env
local ssh_sock=${TMPDIR}/ssh-agent.sock
else
# create a sane tmp dir at /tmp/username
mkdir -p /tmp/${USER}
local ssh_env=/tmp/${USER}/ssh-agent.env
local ssh_sock=/tmp/${USER}/ssh-agent.sock
fi
# start ssh-agent if not already running
if [[ ! -S ${SSH_AUTH_SOCK} ]]; then
# read environment if possible
source ${ssh_env} 2> /dev/null
if ! ps -U ${LOGNAME} -o pid,ucomm | grep -q -- "${SSH_AGENT_PID:--1} ssh-agent"; then
eval "$(ssh-agent | sed '/^echo /d' | tee ${ssh_env})"
fi
fi
# create socket
if [[ -S ${SSH_AUTH_SOCKET} && ${SSH_AUTH_SOCKET} != ${ssh_sock} ]]; then
ln -sf ${SSH_AUTH_SOCKET} ${ssh_sock}
export SSH_AUTH_SOCK=${ssh_sock}
fi
# load ids
if ssh-add -l 2>&1 | grep -q 'no identities'; then
if (( ${#zssh_ids} > 0 )); then
ssh-add "${HOME}/.ssh/${^zssh_ids[@]}" 2> /dev/null
else
ssh-add 2> /dev/null
fi
fi
unset ssh_{sock,env}