Pour plus de commodité, la méthode optimale est une combinaison des réponses de jmtd et de Faheem .
Utiliser ssh-agentseul signifie qu'une nouvelle instance de ssh-agentdoit être créée pour chaque nouveau terminal que vous ouvrez. keychainune fois initialisé, il demandera le mot de passe composé pour la ou les clés privées et le stockera. De cette façon, votre clé privée est protégée par un mot de passe, mais vous n’aurez pas à entrer votre mot de passe encore et encore.
Le wiki Arche recommande de l' initialisation porte - clés /etc/profile.d/ou votre profil de shell, comme .bash_profileou .bashrc. Cela a pour inconvénient d’initialiser votre trousseau dès que vous ouvrez un terminal.
Une approche plus flexible consiste à combiner keychainavec une tmuxsession spécifique . Donc, dans .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
... et il ne vous reste plus qu'à démarrer la tmuxsession sécurisée au fur et à mesure des besoins (lancée à partir d'un raccourci clavier):
#!/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
Désormais, votre trousseau ne sera initialisé qu'une fois lorsque vous démarrez cette tmuxsession spécifique . Tant que cette session persiste, vous pourrez accéder à ces sshclés et accéder à vos référentiels distants.
evalpourriez-vous simplement taperssh-agent?