Por conveniencia, el método óptimo es una combinación de las respuestas de jmtd y Faheem .
Usar ssh-agent
solo significa que se ssh-agent
debe crear una nueva instancia de cada nueva terminal que abra. keychain
cuando se inicializa, pedirá la frase de contraseña para la (s) clave (s) privada (s) y la almacenará. De esa manera, su clave privada está protegida con contraseña, pero no tendrá que ingresarla una y otra vez.
El wiki de Arch recomienda inicializar el llavero desde /etc/profile.d/
o su perfil de shell, como .bash_profile
o .bashrc
. Esto tiene la desventaja de que inicializa su llavero tan pronto como abre un terminal.
Un enfoque más flexible es combinarlo keychain
con una tmux
sesión específica . Entonces, en .bash_profile
:
tsess=$(tmux ls 2>&1)
if [[ "${tsess%%:*}" = "secured" ]] &&
[[ -f $HOME/.keychain/$HOSTNAME-sh ]]; then
# start keychain
/usr/bin/keychain -Q -q --nogui ~/.ssh/id_rsa
. $HOME/.keychain/$HOSTNAME-sh
fi
... y luego es solo un caso de iniciar la tmux
sesión segura cuando sea necesario (iniciada desde una combinación de teclas):
#!/bin/bash
PID=$(pgrep tmux)
new="tmux -f $HOME/.tmux/conf new -s secured"
old="tmux attach -t secured -d"
if [[ -z "$SSH_AUTH_SOCK" ]]; then
eval `ssh-agent`
trap "kill $SSH_AGENT_PID" 0
fi
if [[ -z "$PID" ]]; then
urxvtc -title "SSH" -e sh -c "${new}"
else
urxvtc -title "SSH" -e sh -c "${old}"
fi
ssh-add
Ahora, su llavero solo se inicializará una vez cuando inicie esa tmux
sesión específica . Mientras esa sesión persista, podrá acceder a esas ssh
teclas y acceder a sus repositorios remotos.
eval
podría simplemente escribirssh-agent
?