Для зручності, оптимальний метод являє собою комбінацію з відповідей jmtd і Фахім .
Використовувати ssh-agent
поодинці означає, що ssh-agent
для кожного нового відкритого терміналу потрібно створити новий примірник . keychain
при ініціалізації запитає парольну фразу для приватних ключів і збереже її. Таким чином ваш приватний ключ захищений паролем, але вам не доведеться вводити його знову і знову.
Вікі Arch рекомендує ініціалізацію брелоки від /etc/profile.d/
або вашого профілю оболонки, таких як .bash_profile
або .bashrc
. Це є недоліком в тому, що він запускає брелок, як тільки ви відкриєте термінал.
Більш гнучкий підхід - поєднувати keychain
конкретний tmux
сеанс. Отже, у .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
... і тоді це лише випадок запуску захищеного tmux
сеансу як і коли потрібно (запускається з нав'язки клавіш):
#!/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
Тепер ваш брелок буде ініціалізований лише один раз, коли ви розпочнете конкретний tmux
сеанс. Поки цей сеанс триває, ви зможете отримати доступ до цих ssh
клавіш і перейти до віддалених сховищ.
eval
можна було просто набратиssh-agent
?