Dla wygody optymalną metodą jest połączenie odpowiedzi jmtd i Faheem .
Używanie ssh-agent
samego oznacza, że ssh-agent
dla każdego otwieranego terminala należy utworzyć nową instancję . keychain
po zainicjowaniu poprosi o hasło dla kluczy prywatnych i zapisze je. W ten sposób Twój klucz prywatny jest chroniony hasłem, ale nie będziesz musiał wprowadzać hasła w kółko.
Arch wiki zaleca inicjowanie pęk kluczy z /etc/profile.d/
lub swój profil powłoki, takie jak .bash_profile
albo .bashrc
. Ma to tę wadę, że inicjalizuje pęku kluczy, jak tylko otworzysz terminal.
Bardziej elastycznym podejściem jest połączenie keychain
z określoną tmux
sesją. Tak więc w .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
... a następnie jest to tylko przypadek rozpoczęcia zabezpieczonej tmux
sesji, gdy jest to wymagane (uruchamiane z naciśnięcia klawisza):
#!/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
Teraz Twój pęku kluczy zostanie zainicjowany tylko raz, gdy rozpoczniesz tę konkretną tmux
sesję. Tak długo, jak ta sesja będzie się powtarzać, będziesz mieć dostęp do tych ssh
kluczy i wypychaj swoje zdalne repozytoria.
eval
pisania po prostussh-agent
?