Как избежать указания имени пользователя и пароля при каждом нажатии git? - PullRequest
272 голосов
/ 21 декабря 2011

I git push моя работа в удаленном хранилище Git.

Каждый push будет предлагать мне ввести username и password. Я хотел бы избежать этого для каждого толчка, но как настроить, чтобы избежать этого?

Ответы [ 18 ]

294 голосов
/ 21 декабря 2011

1. Сгенерируйте ключ SSH

Linux / Mac

Открыть терминал для создания ключей ssh:

cd ~                 #Your home directory
ssh-keygen -t rsa    #Press enter for all values

Для Windows

(работает только в том случае, если программа коммита способна использовать сертификаты / закрытые и открытые ssh-ключи)

  1. Используйте Putty Gen для генерации ключа
  2. Экспорт ключа в виде открытого ключа SSH

Вот пошаговое руководство по генерации замазки для вышеуказанных шагов

2. Свяжите ключ SSH с удаленным хранилищем

Этот шаг зависит от настроек пульта.

  • Если это репозиторий GitHub и у вас есть права администратора, перейдите к settings и нажмите «добавить ключ SSH». Скопируйте содержимое вашего ~/.ssh/id_rsa.pub в поле с надписью «Ключ».

  • Если вашим хранилищем управляет кто-то еще, дайте администратору id_rsa.pub.

  • Если ваш удаленный репозиторий администрируется вашим, вы можете использовать эту команду, например:

    scp ~/.ssh/id_rsa.pub YOUR_USER@YOUR_IP:~/.ssh/authorized_keys/id_rsa.pub

3. Установите удаленный URL-адрес в форму, которая поддерживает SSH 1

Если вы выполнили шаги, описанные выше, и все еще получаете запрос пароля, убедитесь, что URL вашего репо находится в форме

git+ssh://git@github.com/username/reponame.git

в отличие от

https://github.com/username/reponame.git

Чтобы увидеть URL репо, запустите:

git remote show origin

Вы можете изменить URL с помощью:

git remote set-url origin git+ssh://git@github.com/username/reponame.git

[1] В этом разделе содержится ответ от Eric P

156 голосов
/ 17 февраля 2015

Постоянная аутентификация в репозиториях Git,

Выполните следующую команду, чтобы включить кэширование учетных данных.

$ git config credential.helper store
$ git push https://github.com/repo.git

Username for 'https://github.com': <USERNAME>
Password for 'https://USERNAME@github.com': <PASSWORD>

Использование также должно указывать срок действия кэширования ,

git config --global credential.helper 'cache --timeout 7200'

После включения кэширования учетных данных оно будет кэшироваться в течение 7200 секунд (2 часа) .

Примечание: Помощник по учетным данным, хранящий незашифрованный пароль налокальный диск.

108 голосов
/ 08 января 2014

Если у вас уже настроены ключи SSH и вы все еще получаете запрос пароля, убедитесь, что URL-адрес вашего репо находится в форме

git+ssh://git@github.com/username/reponame.git

в отличие от

https://github.com/username/reponame.git

Чтобы увидеть URL вашего репо, запустите:

git remote show origin

Вы можете изменить URL с помощью git remote set-url следующим образом:

git remote set-url origin git+ssh://git@github.com/username/reponame.git
37 голосов
/ 30 августа 2012

Просто используйте опцию --repo для команды git push.Как это:

$ git push --repo https://name:password@bitbucket.org/name/repo.git
15 голосов
/ 30 апреля 2016

Экономия на неопределенный срок

Вы можете использовать git-credential-store через

git config credential.helper store

, который хранит ваш пароль в файловой системе в незашифрованном виде :

Использование этого помощника будет хранить ваши пароли в незашифрованном виде на диске, защищенные только разрешениями файловой системы. Если это неприемлемый компромисс безопасности, попробуйте git-credential-cache или найдите помощника, который интегрируется с безопасным хранилищем, предоставляемым вашей операционной системой.

с таймаутом

Используйте git-credential-cache , который по умолчанию хранит пароль в течение 15 минут.

git config credential.helper cache

, чтобы установить другое время ожидания, используйте --timeout (здесь 5 минут)

git config credential.helper 'cache --timeout=300'

Безопасное сохранение на неопределенный срок (OS X и Windows)

  • Если вы используете Mac, Git поставляется с режимом «osxkeychain» , который кэширует учетные данные в безопасной цепочке для ключей, привязанной к вашей системной учетной записи. Этот метод сохраняет учетные данные на диске, и срок их действия не истекает, но они зашифрованы той же системой, в которой хранятся сертификаты HTTPS и автозаполнения Safari.
  • Если вы используете Windows, вы можете установить помощник под названием «Git Credential Manager для Windows». Это похоже на описанный выше помощник «osxkeychain», но использует хранилище учетных данных Windows для управления конфиденциальная информация. Его можно найти на https://github.com/Microsoft/Git-Credential-Manager-for-Windows. [подчеркивает мой]
8 голосов
/ 01 марта 2013

Я использовал ссылку https (https://github.com/org/repo.git) вместо ссылки ssh;

git@github.com:org/repo.git  

Переключение решило проблему для меня!

5 голосов
/ 15 февраля 2016

Подключите ваш git-клиент к хранилищу учетных данных вашей ОС.Например, в Windows вы привязываете помощника учетных данных к wincred:

git config --global credential.helper wincred

Есть ли способ пропустить ввод пароля при использовании https: // на GitHub?

4 голосов
/ 20 апреля 2017

В операционной системе Windows используйте это вместо этого, это работает для меня:

https://{Username}:{Password}@github.com/{Username}/{repo}.git

, например

git clone https://{Username}:{Password}@github.com/{Username}/{repo}.git

git pull https://{Username}:{Password}@github.com/{Username}/{repo}.git

git remote add origin https://{Username}:{Password}@github.com/{Username}/{repo}.git

git push origin master
4 голосов
/ 26 марта 2018

Просто хотел бы кое-что упомянуть о решении, сказанном выше несколько раз:

git config credential.helper store

После этого вы можете использовать любую команду, для которой требуется пароль. Тебе не нужно давить. (Вы также можете вытащить, например). После этого вам не нужно будет снова вводить имя пользователя / пароль.

3 голосов
/ 05 мая 2013

Я использовал ответ, предложенный Павлом, и он сработал для меня. Моя разница заключалась в том, чтобы сделать это, когда я добавлял пульт, вот так: git remote add (alias) https://(name:password)@github.com/(the remote address).git

...