Zur Vereinfachung ist die optimale Methode eine Kombination der Antworten von jmtd und Faheem .
Mit ssh-agent
allein bedeutet , dass eine neue Instanz des ssh-agent
Bedarfs für jedes neues Terminals erstellt werden , die Sie öffnen. keychain
Bei 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_profile
oder zu initialisieren .bashrc
. Dies hat den Nachteil, dass Ihr Schlüsselbund initialisiert wird, sobald Sie ein Terminal öffnen.
Ein flexiblerer Ansatz ist die Kombination keychain
mit einer bestimmten tmux
Sitzung. 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 tmux
Sitzung 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 tmux
Sitzung starten . Solange diese Sitzung besteht, können Sie auf diese ssh
Schlüssel zugreifen und auf Ihre Remote-Repositorys pushen.
eval
Eingabessh-agent
?