Як я можу виконати `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.