Zur Vereinfachung ist die optimale Methode eine Kombination der Antworten von jmtd und Faheem .
Mit ssh-agentallein bedeutet , dass eine neue Instanz des ssh-agentBedarfs für jedes neues Terminals erstellt werden , die Sie öffnen. keychainBei der Initialisierung werden Sie nach der Passphrase für den / die privaten Schlüssel gefragt und diese gespeichert. Auf diese Weise ist Ihr privater Schlüssel durch ein Passwort geschützt, aber Sie müssen Ihr Passwort nicht immer wieder eingeben.
Das Arch-Wiki empfiehlt, den Schlüsselbund von /etc/profile.d/oder Ihrem Shell-Profil wie .bash_profileoder zu initialisieren .bashrc. Dies hat den Nachteil, dass Ihr Schlüsselbund initialisiert wird, sobald Sie ein Terminal öffnen.
Ein flexiblerer Ansatz ist die Kombination keychainmit einer bestimmten tmuxSitzung. Also, in .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
... und dann ist es nur ein Fall, die gesicherte tmuxSitzung nach Bedarf zu starten (von einer Tastatur aus gestartet):
#!/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
Jetzt wird Ihr Schlüsselbund nur einmal initialisiert, wenn Sie diese bestimmte tmuxSitzung starten . Solange diese Sitzung besteht, können Sie auf diese sshSchlüssel zugreifen und auf Ihre Remote-Repositorys pushen.
evalEingabessh-agent?