Я гуглил и прочитал FAQ и Wiki для Magit, но все еще не могу понять это, все, что я нахожу, это ответы о Windows ...
Как я могу настроить Magit для использования моего запущенного сеанса ssh-agent и не запрашивать пароль при выполнении push.
Я использую Linux и запускаю ssh-agent на своем терминале, а затем разблокирую ключ, что позволяет мне выполнять git push и т. Д., Не вводя пароль каждый раз.
Конверт:
Arch Linux
Emacs 24.4
ssh-agent с добавленными ключами для разблокировки на первом открытом терминале.
РЕДАКТИРОВАТЬ: я имел в виду использование пароля, вы знаете, для ключа SSH, и др.
И я подталкиваю к Bitbucket, но я верю, что ключевая проблема заключается в том, что Magit не говорит / не распознает мой ssh-agent.
Может быть, нужно установить какой-нибудь конфиг, чтобы сказать, что я его запускаю ??
M-x getenv SSH_AGENT_PID
?M-x getenv SSH_AUTH_SOCK
Ответы:
Что ж, оказалось, что это скорее кроличья нора, чем я ... И для того, что я могу собрать, нет лучшего решения для этой конкретной проблемы, с такой комбинацией desktop, ssh-agent, emacs.
Проблема 1
XFCE запускал свой собственный ssh-агент с сеансом, фактически нигде не говоря, что привело к тому, что в системе был 1 неиспользуемый глобальный ssh-agent и мой специфичный для оболочки агент, разблокированный.
На другом DE вы можете запустить с той же проблемой, и вам нужно будет найти особенности, чтобы отключить автоматический запуск агента.
Решение 1
Запустите эту команду, чтобы отключить запуск ssh-agent при запуске
xfconf-query -c xfce4-session -p /startup/ssh-agent/enabled -n -t bool -s false
Проблема 2
Теперь Emacs не имеет установленных переменных SSH_AGENT_PID и SSH_AUTH_SOCK , поэтому в загруженной среде ничего нет. Очевидно, что Magit по-прежнему запрашивает ключ, поскольку он не знает о новом ssh-agent, который мы начали.
Решение 2
Нам нужно, чтобы Emacs извлек эти новые переменные из среды, но, разумеется, прямого пути нет.
Введите: exec-path-from-shell, который позволяет вам извлекать переменные окружения из вашей оболочки. Так.
(require 'exec-path-from-shell) (exec-path-from-shell-copy-env "SSH_AGENT_PID") (exec-path-from-shell-copy-env "SSH_AUTH_SOCK")
Спасибо, ребята, за предложение взглянуть на переменные SSH _ **, которое указало мне правильное направление.
источник
Другое решение для ленивых - просто использовать пакет, который обрабатывает именно этот случай (устанавливая переменные среды, связанные с цепочкой для ключей Emacs):
M-x keychain-refresh-environment
и теперь должно работать.(keychain-refresh-environment)
в свой init.el, чтобы решение работало после перезапуска Emacs.И все, при условии, что ваш ssh-агент настроен и работает.
Действительно хорошее описание, из комментария пакета:
источник
keychain
.У FWIW
keychain
теперь есть--systemd
переключатель, который будет вводить переменные в пользовательскую среду systemd.Самое простое решение, которое я нашел, - добавить
eval "$(keychain --eval --quiet --noask --systemd keys...)"
скрипт, запускаемый из модуля systemd, для запуска сервера Emacs.источник