it-swarm-ru.tech

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

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

$ cat .hg/hgrc 
[paths]
default = ssh://[email protected]/tshepang/bloog

$ hg Push
Enter passphrase for key '/home/wena/.ssh/id_rsa': 
pushing to ssh://[email protected]/tshepang/bloog
searching for changes
...
238
tshepang

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

$ ssh-add

перед нажатием. Введите ваш пароль, когда его спросят.

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

Could not open a connection to your authentication agent.

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

eval $(ssh-agent)

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

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

363
jmtd

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

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

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

48
stefano

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

apt-get install keychain

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

29
Faheem Mitha

Создайте (или отредактируйте, если он существует) следующий файл ~/.ssh/config:

Host *
    UseKeychain yes
    AddKeysToAgent yes
    IdentityFile ~/.ssh/id_rsa
20
ness-EE

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

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

Arch wiki рекомендует инициализировать связку ключей из /etc/profile.d/ или ваш профиль Shell, например .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 и ​​передавать их в удаленные репозитории.

6
jasonwryan

Вы можете использовать sshpass:

$ Sudo apt-get install sshpass
$ sshpass -p 'password' ssh [email protected]

Вам просто нужно добавить sshpass -p yourpassphrase перед добавлением вашей обычной команды ssh.

0
belka