Как я могу выполнить `git pull` без повторного ввода пароля SSH?

97

Можно ли настроить git/sshтак, чтобы мне не приходилось вводить кодовую фразу каждый раз, когда я хочу выполнить операцию git pull? Обратите внимание, что репо является частным на github.

Или, в качестве альтернативы, что было бы лучше всего для автоматизации развертывания кода из частного репозитория Github?

Дополнительные сведения: экземпляр EC2, на котором запущен общедоступный AMI на основе Fedora.

jldupont
источник
2
возможный дубликат настройки Git через SSH
user229044
У вас есть решение этой проблемы?
nim
Начиная с git 2.11+ (4 квартал 2016 г.), использование libsecret является другим способом: stackoverflow.com/a/40312117/8477066
Хильке Валинга

Ответы:

69

Взгляните на эту ссылку https://help.github.com/articles/working-with-ssh-key-passphrases/

Но я не хочу вводить длинную кодовую фразу каждый раз, когда использую ключ!

И я нет! К счастью, есть изящный маленький инструмент, ssh-agentкоторый может надежно сохранить вашу парольную фразу, чтобы вам не приходилось вводить ее повторно. Если вы используете OSX Leopard или более позднюю версию, ваши ключи могут быть сохранены в системной связке ключей, что сделает вашу жизнь еще проще. Большинство установок Linux автоматически запускают ssh-agent при входе в систему.

Фредрик Пиль
источник
3
немного нервничал, отвечая кому-то с репутацией 17.7k; я неправильно истолковал вопрос ... ;-)
Fredrik Pihl
3
нервничаешь? будьте уверены: подавляющее большинство людей здесь довольно воспитаны ... а у тех, кто нет, ну, у них проблемы
посерьезнее,
2
Эта ссылка была полезна в объяснении, какие команды нужно запустить, чтобы сохранить вашу парольную фразу ssh-agent: rabexc.org/posts/using-ssh-agent
Mateus Gondim
Я не хочу пользоваться ключами. Просто у меня есть пользовательский \ пароль, и я хочу сохранить его на стороне клиента git
ним
Почему по ссылке доступны только варианты Mac / Widows? Я хочу выполнить git pull на сервере unix без повторного ввода прохода. удалось заставить его работать для исторического проекта, но не могу сказать, что я там делал. Дело в том, что когда вы ssh на удаленную машину unix, ключ передается и вместо этого используется как ключ git pull (или частный композитор vcs)? Я считаю, что я что-то неправильно понимаю. Любая помощь приветствуется :)
trainoasis
30

Я включил кеширование паролей, как описано здесь:

https://help.github.com/articles/caching-your-github-password-in-git/#platform-linux

Чтобы кешировать пароль на месяц:

git config --global credential.helper 'cache --timeout=2628000'
Силерия
источник
Спасибо, temuri- Я всюду искал именно эту деталь. Это не сработало, но в документации, похоже, не упоминается, что это только для HTTPS.
Майк Эмери,
2
Если вы используете пароль (а не кодовую фразу с ключевым файлом) для URL-адреса удаленного репозитория Git на основе SSH, вы не сможете сохранить пароль вообще. Но я заметил, что после ввода любой команды git вы можете сразу ввести пароль и нажать Enter . Вам не нужно ждать появления запроса на ввод пароля.
ADTC
1
git still ask pass
ним
12

Попробуй это:

git config credential.helper store

Вам нужно будет ввести свой пароль один раз, после чего он будет сохранен в папке внутри корня.

Как указано в комментариях, это НЕ работает для паролей SSH, только для паролей HTTPS.

янки
источник
1
@nim Это не значит, что вы должны отрицать ответ, я предложил то, что у меня сработало, и кто-то может счесть это полезным.
Yankee
Это не пароль для сохранения. Пробую и ничего не получается. Если вы используете такой удаленный
nim
1
Это работает, если вы хотите сохранить базовый пароль аутентификации HTTP.
Фил
4
Это НЕ работает для паролей SSH, только для паролей HTTPS.
Элиэзер Берлин
хорошо работает для https. Вам просто нужно ввести это. В следующий раз вам нужно будет ввести пересказ в последний раз. В следующий раз пароль должен быть запомнен git.
Джонатан,
7

Теперь ваша ситуация исправлена, но для меня это был тот факт, что у меня было более одного ключа в ~/.ssh/

Чтобы решить проблему, мне пришлось создать файл с именем ~/.ssh/configи добавить строку:

IdentityFile ~/.ssh/my_key2_rsa

где ~/.ssh/my_key2_rsaмой ключ.

Могсдад
источник
1
Спасибо за это, мои id_rsa и id_rsa.pubфайлы имеют пользовательское имя , которое почему мерзавец никогда не признает его. ref: linux.die.net/man/5/ssh_config
lasec0203,
5

Не знаю, почему об этом еще никто не сообщил. Но самый простой подход - просто добавить одну строку AddKeysToAgent yesв начало файла .ssh / config. Конечно, ssh-agentнужно забегать заранее. Если он не запущен (проверьте командой ssh-agentна терминале), просто запустите егоeval $(ssh-agent)

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

Источник решения /ubuntu/362280/enter-ssh-passphrase-once/853578#853578

инфо-журнал
источник
Это абсолютно правильный ответ. Кроме того, для запуска ssh-agent можно использовать службу пользователя systemd
someonewithpc