Как не спрашивать парольную фразу каждый раз, когда я нажимаю Bitbucket

Я создал свой материал ssh с помощью этого руководства , и он работал хорошо (я мог запустить hg push не спрашивая парольную фразу). Что могло произойти между этим и сейчас, учитывая, что я все еще использую тот же домашний каталог.

 $ cat .hg/hgrc [paths] default = ssh://hg@bitbucket.org/tshepang/bloog $ hg push Enter passphrase for key '/home/wena/.ssh/id_rsa': pushing to ssh://hg@bitbucket.org/tshepang/bloog searching for changes ... 

Вам нужно использовать агент ssh. Короткий ответ: попробуйте

 $ ssh-add 

перед тем, как нажимать. Поставьте свою кодовую фразу, когда ее спросят.

Если вы еще не используете агент ssh, вы получите следующее сообщение:

 Could not open a connection to your authentication agent. 

В этой ситуации вы можете запустить один и настроить среду таким образом

 eval $(ssh-agent) 

Затем повторите команду ssh-add .

Стоит взглянуть на man-страницу агента ssh .

Способ решить это с помощью ssh-agent и ssh-add :

 $ exec ssh-agent bash $ ssh-add Enter passphrase for ~/.ssh/id_rsa: 

После этого кодовая фраза сохраняется для текущего сеанса. и вас больше не будут спрашивать.

Я использую Keychain для управления ключами ssh. Он также доступен в Debian и, предположительно, Ubuntu с

 apt-get install keychain 

Вот страница пакета ключей для ключей Debian . Как вы можете видеть, проект не очень активен, но работает для меня. Я также немного прокомментировал это в другом ответе здесь

Для удобства оптимальный метод представляет собой комбинацию ответов jmtd и Faheem .

Использование только ssh-agent означает, что для каждого нового терминала, который вы открываете, должен быть создан новый экземпляр ssh-agent . keychain при инициализации запросит кодовую фразу для закрытого ключа (ов) и сохранит ее. Таким образом, ваш секретный ключ защищен паролем, но вам не придется вводить пароль снова и снова.

Arch wiki рекомендует инициализировать keychain из /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 мере необходимости (запускается из keybind):

 #!/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 

Теперь ваш keychain будет инициализироваться только один раз, когда вы начнете этот конкретный сеанс tmux . Пока этот сеанс сохраняется, вы сможете получить доступ к этим ключам ssh и нажать на удаленные репозитории.