it-swarm.com.ru

Git запрашивает имя пользователя каждый раз, когда я нажимаю

Всякий раз, когда я пытаюсь нажать на мой репозиторий, git запрашивает оба username & password

У меня нет проблем с повторным вводом пароля каждый раз, но проблема заключается в вводе имени пользователя. Я использую https для клонирования своего хранилища.

Итак, как я могу настроить git, чтобы он не запрашивал username для каждого git Push.

Я новичок в Linux, но IIRC в Windows git Push только просит пароль.

463
RanRag

Изменить (автор @ dk14 по предложению модераторов и комментариев)

ВНИМАНИЕ: Если вы используете credential.helper store из ответа, ваш пароль будет храниться полностью незашифрованным («как есть») в ~/.git-credentials. Пожалуйста, ознакомьтесь с разделом комментариев ниже или ответами из раздела «Связанные», особенно если ваш работодатель не проявляет никакой терпимости к вопросам безопасности.

Обоснование: подход, описанный в ответе, может привести к серьезной уязвимости, особенно для предприятий, работающих с частными финансовыми данными. В сочетании с незначительными проблемами безопасности (часто присутствующими в таком) или минимальной социальной инженерией это позволяет перехватить большинство учетных данных в сети проекта, так как местоположение «голого» пароля известно заранее. Это, возможно, включает учетные данные, дающие частичный доступ к производственной среде, поэтому де-факто расширяет права доступа [внутреннего] злоумышленника и позволяет в некоторой степени скрыть личность хакера.

В качестве дополнительного примечания (чтобы расширить это предупреждение на примере), некоторые крупные корпоративные проекты, похоже, имеют эту проблему, несмотря на обеспечение безопасных виртуальных сред для сотрудников ... По сути, мой призыв избавиться от https auth был отклонен на этом основании - но в то время я не думал, что эксплойт (например, cat ~/git.credentials | curl ...) можно внедрить во вспомогательные скрипты bash/build, размещенные на Git, чтобы распространить его среди пользователей, возможно, даже анонимно (так как некоторые автоматически синхронизируются). честно говоря, этот хак обычно не дает (по крайней мере) прямого доступа к критическим системам. За исключением случаев, когда Git-credentials === corporate-email-credentials.


Edit # 2 (by @ dk14):

Несмотря на то, что он принят, он не отвечает на фактический вопрос ОП об исключении только имени пользователя (но не пароля). Для читателей с этой конкретной проблемой @ grawity's answer может пригодиться.


Оригинальный ответ (@Alexander Zhu):

Вы можете сохранить свои учетные данные, используя следующую команду

$ git config credential.helper store
$ git Push http://example.com/repo.git
Username: <type your username>
Password: <type your password>

Также я предлагаю вам прочитать
$ git help credentials

768
Alexander Zhugastrov

Вы можете сделать это в файле .git/config вашего локального репозитория. Этот файл содержит раздел под названием «remote» с записью под названием «url». Запись 'url' должна содержать ссылку на https репозитория, о котором вы говорите.

Когда вы префикс хоста 'url' с вашим именем пользователя, git больше не должен спрашивать ваше имя пользователя. Вот пример:

url = https://[email protected]
133
user701648

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

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

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

Username for 'https://github.com': <USERNAME>
Password for 'https://[email protected]': <PASSWORD>

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

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

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


Читать учетные данные Документы

$ git help credentials
86
Jay Patel

Добавьте новые ключи SSH, как описано в эта статья на GitHub .

Если Git по-прежнему запрашивает у вас имя пользователя и пароль, попробуйте изменить https://github.com/ на [email protected]: в удаленном URL:

$ git config remote.Origin.url 
https://github.com/dir/repo.git

$ git config remote.Origin.url "[email protected]:dir/repo.git"
28
Lukasz Czerwinski

Если вы используете https вместо ssh, вы можете отредактировать «url» в .git/config, как говорит user701648, но при желании вы можете добавить также пароль:

url = https://username:[email protected]
25
Daniel Lerch

Самый простой способ, который я нашел, был с этой командой:

git config --global credential.https://github.com.username <your_username>

Это работает для каждого сайта отдельно и изменяет ваш глобальный git config.

Чтобы увидеть изменения, используйте:

git config --global --edit
25
Ben

Вы можете установить свое имя пользователя для всех репозиториев на данном сайте, добавив что-то вроде следующего в ваш файл конфигурации Git. Вы хотите изменить " https://example.com " и "меня" на фактический URL и ваше действительное имя пользователя.

[credential "https://example.com"]
    username = me

(Это прямо из "git help credentials")

19
Alan De Smet

Убедитесь, что вы используете SSH вместо http. Проверьте это SO ответ.

10
gkris

В дополнение к ответу пользователя user701648 вы можете сохранить свои учетные данные в своей домашней папке (глобальной для всех проектов) вместо папки проекта, используя следующую команду

$ git config --global credential.helper store
$ git Push http://example.com/repo.git
Username: <type your username>
Password: <type your password>
6
Yuvi

Когда я только git pull, git pull Origin xxx, git запрашивает имя пользователя и пароль.

git config credential.helper store

оно работает.

5
Languoguang

Смена клонированного репо работает:

git remote set-url Origin [email protected]:gitusername/projectname.git

Использование кэшированных учетных данных работает, а установка периода ожидания делает вещи менее раздражающими. Если вы используете помощник по учетным данным Windows, это должен быть самый простой способ (особенно если SSH заблокирован).

5
Layer8Err

Если вы используете версию SSH, у вас не возникнет проблем с паролями. Только один раз вы сгенерируете ключ SSH, чтобы сообщить git, что этот компьютер будет работать с эту учетную запись github и никогда больше не спрашивайте меня о доступе (для этого компьютера).

Как генерировать SSH для Github

4
Hazarapet Tunanyan

git config --global credential.helper cache

2
Kai Wang

Самый простой способ - создать файл ~/.netrc со следующим содержимым:

machine github.com
login YOUR_GITHUB_USERNAME
password YOUR_GITHUB_PASSWORD

(как показано здесь: https://Gist.github.com/ahoward/2885020 )

Вы даже можете закрыть разрешения для этого файла, чтобы никто не смог прочитать ваш пароль, набрав:

chmod 600 ~/.netrc
2
Simpler
  1. $ git config credential.helper store

  2. $ git Push/push https://github.com/xxx.git

  3. Затем введите свое имя пользователя и пароль.

  4. Готово
1
Stephen Tun Aung

Чтобы избежать ввода имени пользователя, но все равно будет предложено ввести пароль, вы можете просто клонировать свой репозиторий, включая имя пользователя:

git clone [email protected]/my_repo.git
0
ManoDestra