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

Я настроил свой материал 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
...
226
29.04.2011, 00:07
4 ответа

Необходимо использовать ssh агент. Короткий ответ: попробовать

$ ssh-add

перед продвижением. Предоставьте свой пароль при выяснении.

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

Could not open a connection to your authentication agent.

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

eval $(ssh-agent)

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

Это стоит смотреть на ssh страницу справочника агента.

348
27.01.2020, 19:28
  • 1
    Какой смысл eval Вы могли просто ввести ssh-agent? –  James McMahon 18.09.2017, 20:07
  • 2
    Это отображает некоторые команды, которые позволяют Вам использовать его, и не выполняет их для Вас; eval делает excuting. –  tshepang 03.02.2018, 11:21

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

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

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

47
27.01.2020, 19:28

Я использую Связку ключей для управления ssh ключи. Это также доступно в Debian и поэтому по-видимому, Ubuntu с

apt-get install keychain

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

27
27.01.2020, 19:28
  • 1
    //, Это работало на меня. Это - путь лучше, чем ssh-агент, так как я не должен вводить свой ssh ключевой пароль каждый раз, когда я открываю терминал. –  Nathan Basanese 10.09.2015, 22:12
  • 2
    @NathanBasane - Вы говорящий, что использование связки ключей, Вы не должны вводить ssh ключевой пароль каждый раз, когда Вы открываете терминал? Как Вы настраиваете это? потому что связка ключей продолжает просить пароль каждый раз, когда я открываю терминал, только в первый раз, когда я открываю его после начальной загрузки хотя, но все еще. Я не хочу вводить пароль каждый раз. –  m4l490n 01.01.2018, 21:20
  • 3
    @m4l490n нет, при использовании связки ключей Вы не должны должны быть вводить ssh ключевой пароль каждый раз, когда Вы открываете терминал. Но действительно необходимо ввести его однажды после начальной загрузки. Пароль не сохраняется на диск - который был бы небезопасный. –  Faheem Mitha 01.01.2018, 22:27

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

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

Дуга Wiki рекомендует инициализировать связку ключей от /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

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

6
27.01.2020, 19:28
  • 1
    Как я заставил бы это работать над удаленной машиной? Я изменил второй сценарий для проверки на $SSH_CLIENT и если он существует, не выполняют urxvtc, просто tmux. Это работает, но проблемой является .bash_profile часть. Когда я сначала вхожу в поле, оно говорит "сервер, не найденный: Соединение отказалось", который является выводом "tmux ls". Затем когда я выполняюсь, второй сценарий, tmux или запускает новую сессию или присоединяет к существующей, но нет никакой подсказки связки ключей. Затем когда я выхожу из сессии, подсказка связки ключей там ожидает. –  J.C. Yamokoski 20.02.2012, 17:13
  • 2
    я обновил ответ на тишину tmux вывод, если нет никакой сессии. –  jasonwryan 20.02.2012, 20:08
  • 3
    Спасибо, но это все еще не решило проблему со связкой ключей. tmux создает новую сессию, но переходит прямо к любой пустой подсказке. Только, когда я выхожу от tmux сессии, делают я вижу, что подсказка связки ключей просит мой пароль. –  J.C. Yamokoski 20.02.2012, 22:08
  • 4
    я предполагаю, что должен прекратить говорить связку ключей, так как связка ключей только выполняется в .bash_profile. Проблема от выполнения, ssh-добавляют. Хотя, если я работаю, ssh-добавляют вручную после создания tmux сессии, оно работает. –  J.C. Yamokoski 20.02.2012, 22:17
  • 5
    Пропустите второй сценарий и только запустите Вашу защищенную tmux сессию с .profile - тем путем Вы получите подсказку для ключей, как только Вы входите в систему. –  jasonwryan 20.02.2012, 22:29

Теги

Похожие вопросы