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, solicitará a senha da (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 inicializar as chaves do /etc/profile.d/
seu perfil de shell, como .bash_profile
ou .bashrc
. Isso tem uma desvantagem, pois inicializa seu chaveiro assim que você abre um terminal.
Uma abordagem mais flexível é combinar keychain
com uma tmux
sessão 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 tmux
sessão protegida como e quando necessário (iniciado a partir de um keybind):
#!/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, seu chaveiro será inicializado apenas uma vez quando você iniciar essa tmux
sessão específica . Enquanto essa sessão persistir, você poderá acessar essas ssh
chaves e enviar para seus repositórios remotos.
eval
você apenas digitarssh-agent
?