Por conveniência, o método ideal é uma combinação das respostas de jmtd e Faheem .
Usar ssh-agent
sozinho significa que uma nova instância de ssh-agent
precisa ser criada para cada novo terminal que você abrir. keychain
quando inicializado pedirá a frase secreta para a (s) chave (s) privada (s) e a armazenará. Dessa forma, sua chave privada é protegida por senha, mas você não precisará digitar sua senha repetidamente.
O Wiki do Arch recomenda a inicialização das chaves do /etc/profile.d/
ou do seu perfil de shell, como .bash_profile
ou .bashrc
. Isto tem uma desvantagem na medida em que inicializa o seu chaveiro assim que você abre um terminal.
Uma abordagem mais flexível é combinar keychain
com uma sessão tmux
específica. Então, em .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
... e, em seguida, é apenas um caso de iniciar a sessão segura de tmux
como e quando necessário (iniciado a partir de uma associação 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
Agora, suas chaves só serão inicializadas uma vez quando você iniciar essa sessão tmux
específica. Enquanto essa sessão persistir, você poderá acessar as chaves ssh
e enviar para seus repositórios remotos.