Як я можу виконати `git pull` без повторного введення свого SSH-пароля?


96

Чи можна налаштувати, git/sshщоб мені не потрібно було вводити свою парольну фразу кожного разу, коли я хочу виконати a git pull? Зверніть увагу, що репо є приватним на github.

Або, як варіант, яка найкраща практика буде автоматизувати розгортання коду з приватного репозиторію Github?

Додаткові подробиці: екземпляр EC2 із загальнодоступним AMI на базі Fedora.


2
можливий дублікат налаштування Git через SSH
meagar

Ви вирішили цю проблему?
NIM

Станом на мерзотника 2.11+ (Q4 2016) з використанням libsecret інший спосіб: stackoverflow.com/a/40312117/8477066
Hielke Walinga

Відповіді:


69

Погляньте на це посилання https://help.github.com/articles/working-with-ssh-key-passphrases/

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

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


3
трохи нервовий, відповідаючи на когось із репутацією 17,7 тис .; я неправильно інтерпретував питання ... ;-)
Фредрік Піл

3
нервовий? будьте впевнені: переважна більшість людей тут досить добре виховані ... а ті, хто цього не мають, ну, вони мають більші проблеми, ніж я :)
jldupont

2
Це посилання було корисним для пояснення того, які команди запускати, щоб зберегти вашу парольну фразу в ssh-agent: rabexc.org/posts/using-ssh-agent
Матеус Гондім

Я не хочу використовувати ключі. Просто у мене є user \ pass, і я хочу зберегти його на стороні клієнта git
nim

Чому посилання надає лише параметри Mac / Widows? Я хочу git тягнути на сервері unix без повторного введення пропуску. вдалося змусити його працювати над історичним проектом, але не можу сказати, що я там робив. Справа в тому, що при переході ssh на віддалену машину unix ключ передається і замість цього використовується як ключ git pull (або приватний композитор vcs)? Я вважаю, що я тут щось не розумію. Будь-яка допомога вдячна :)
trainoasis

29

Я включив кешування паролів, як описано тут:

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

Щоб кешувати пароль протягом місяця:

git config --global credential.helper 'cache --timeout=2628000'

Дякую, темурі - я всюди шукав саме цю деталь. Це не спрацювало, але, здається, в документації не згадується, що це лише для HTTPS.
Mike Emery

2
Якщо ви використовуєте пароль ( не парольну фразу з ключовим файлом) для URL-адреси віддаленого репозиторію Git на основі SSH, ви не можете зберегти пароль взагалі. Але я помітив, що після видачі будь-якої команди git ви можете відразу ввести пароль і натиснути Enter . Вам не потрібно чекати появи запиту на введення пароля.
ADTC

1
git still ask pass
nim

12

Спробуйте це:

git config credential.helper store

Вам доведеться ввести свій пароль один раз, після чого він зберігається в папці всередині кореневої системи.

Як зазначалося в коментарях, це НЕ працює для паролів SSH, лише для паролів HTTPS.


1
@nim Це не означає, що ви повинні проголосувати за відповідь, я запропонував, що мені вдалося, і хтось може виявити це корисним.
Yankee

Це не пароль для збереження. Я спробую, і нічого не вийде. Якщо вам подобається цей пульт ssh: // name @ ip / path
nim

1
Це працює, якщо ви хочете зберегти основний пароль авторизації HTTP.
Філ

4
Це НЕ працює для паролів SSH, лише для паролів HTTPS.
Berlin

чудово працює для https. Вам просто потрібно це ввести. Наступного разу, коли вам потрібно буде вводити перифраз останнього разу. Наступного разу пароль слід запам'ятати git.
Джонатан

7

Зараз ваша ситуація виправлена, проте для мене це був той факт, що у мене було більше одного ключа ~/.ssh/

Для вирішення проблеми мені довелося створити файл із назвою ~/.ssh/configта додати рядок:

IdentityFile ~/.ssh/my_key2_rsa

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


1
Дякую за це, мої id_rsa та id_rsa.pubфайли мають власну назву, тому git ніколи не розпізнає її. 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-агент, можна скористатися послугою користувача systemd
кто-тоpithpc
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.