Git постоянно просит у меня пароль
Я уже некоторое время пользуюсь Git, но постоянные запросы на ввод пароля приводят меня в движение.
Я использую Mac OS X и GitHub, и я настроил Git и мои SSH-ключи в соответствии с инструкциями на странице GitHub Set Up Git.
Я также добавил ключ github SSH в свою цепочку ключей Mac OS X, как упоминалось на странице парольных фраз ключа GitHub SSH. Мой открытый ключ зарегистрирован в Git.
Тем не менее, каждый раз, когда я пытаюсь Git pull, мне приходится вводить свое имя пользователя и пароль. Есть ли что-то кроме ключа SSH, который мне нужно настроить для этого?
Ответы
Ответ 1
Я думаю, что у вас неправильный URL репозитория Git.
Откройте .git/config
и найдите раздел [remote "origin"]. Убедитесь, что вы используете SSH:
ssh://[email protected]/username/repo.git
Вы можете увидеть SSH URL на главной странице вашего репозитория, если вы нажмете Clone или загрузите и выберите ssh.
И НЕ https
или git
:
https://github.com/username/repo.git
git://github.com/username/repo.git
Теперь вы можете проверить с помощью только ключа SSH вместо имени пользователя и пароля.
Если Git жалуется, что 'origin' has already been added
, откройте файл .config
и отредактируйте часть url = "..."
после [remote origin]
как url = ssh://github/username/repo.git
Ответ 2
Настройка credential.helper
На OS X (теперь macOS), запустите это в Терминале:
git config --global credential.helper osxkeychain
Это позволяет Git использовать файл Keychain.app для хранения имени пользователя и пароля и для получения ключевой фразы для вашего личного ключа SSH из цепочки для ключей.
Для Windows используйте:
git config --global credential.helper wincred
Поиск проблемы
Если помощник по учетным данным Git настроен правильно, macOS сохраняет ключевую фразу в цепочке для ключей. Иногда связь между SSH и парольными фразами, хранящимися в цепочке для ключей, может разорваться. Запустите ssh-add -K
или ssh-add ~/.ssh/id_rsa
чтобы ssh-add ~/.ssh/id_rsa
добавить ключ в ssh-add ~/.ssh/id_rsa
ключей.
macOS v10.12 (Sierra) меняется на SSH
Для macOS v10.12 (Sierra) ssh-add -K
необходимо запускать после каждой перезагрузки. Чтобы избежать этого, создайте ~/.ssh/config
с этим содержимым.
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_rsa
Из ssh_config
man
страницы на 10.12.2:
UseKeychain
В macOS указывает, должна ли система искать ключевые фразы в цепочке для ключей пользователя при попытке использовать определенный ключ. Когда пароль предоставляется пользователем, этот параметр также указывает, следует ли сохранять фразу-пароль в цепочке для ключей после того, как она будет проверена на правильность. Аргумент должен быть "да" или "нет". По умолчанию "нет".
Apple добавила Technote 2449, который объясняет, что произошло.
До macOS Sierra ssh
представлял диалоговое окно с запросом вашей парольной фразы и предлагал возможность сохранить ее в цепочке для ключей. Этот интерфейс был объявлен устаревшим некоторое время назад и был удален.
Ответ 3
Это случилось со мной, когда я обновил MacOS до версии 10.12 (Sierra). Похоже, агент SSH был очищен при обновлении.
$ ssh-add -L
The agent has no identities.
Просто запущенный ssh-add
обнаружил мою существующую личность. Я ввел пароль, и было хорошо, чтобы пойти снова.
Ответ 4
Используйте это: Замените github.com на соответствующее имя хоста
git remote set-url origin [email protected]:user/repo.git
Ответ 5
Как уже говорили другие, вы можете установить помощник кеша паролей. Я просто хотел опубликовать ссылку для других платформ, а не только для Mac. Я использую сервер Linux, и это было полезно: кэширование вашего пароля GitHub в Git
Для Mac:
git credential-osxkeychain
Окна:
git config --global credential.helper wincred
Linux:
git config --global credential.helper cache
git config --global credential.helper 'cache --timeout=3600'
# Set the cache to timeout after 1 hour (setting is in seconds)
Ответ 6
Также ищите, кто спрашивает вас о парольной фразе. Это Git или ваш агент SSH?
В моем случае каждый раз, когда я делал git pull
он спрашивал меня:
Enter passphrase for key '/work/username/.ssh/id_rsa':
Так что я предположил, что это Git просит пароль. Поэтому я продолжал искать решения, но потом понял, что мой агент SSH отключился. Что можно исправить с помощью eval $(ssh-agent)
и ssh-add
как указано здесь.
Также ниже приведен небольшой фрагмент, который вы можете добавить в файл ~/.bashrc
(или эквивалентный), чтобы убедиться, что ваш агент SSH запущен при вашем входе в систему.
В любом случае, это была довольно глупая ошибка, которую я совершил, но разместил ее здесь, на всякий случай, если это поможет кому-то сэкономить время от лая неправильного дерева, как я.
# Start the ssh-agent
function start_agent {
echo "Initializing new SSH agent..."
# Spawn ssh-agent
/usr/bin/ssh-agent | sed 's/^echo/#echo/' > ${SSH_ENV}
echo succeeded
chmod 600 ${SSH_ENV}
. ${SSH_ENV} > /dev/null
/usr/bin/ssh-add
}
if [ -f "${SSH_ENV}" ]; then
. ${SSH_ENV} > /dev/null
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
start_agent;
}
else
start_agent;
fi
Ответ 7
git config credential.helper store
Примечание. Хотя это удобно, Git будет хранить ваши учетные данные в открытом тексте в локальном файле (.git-credentials) в вашем каталоге проектов (см. ниже для "домашнего" каталога). Если вам это не нравится, удалите этот файл и переключитесь на использование параметра кеша.
Если вы хотите, чтобы Git возобновлял запрос ваших учетных данных каждый раз, когда ему нужно подключиться к удаленному репозиторию, вы можете запустить эту команду:
git config --unset credential.helper
Чтобы сохранить пароли в .git-учетных данных в вашем каталоге% HOME%, а не в каталоге проекта: используйте флаг -global
git config --global credential.helper store
Ответ 8
Руководство по Git в Windows и GitHub с использованием SSH для push/pull: Иллюстрированное руководство по Git в Windows
- Скачайте и установите PuTTY
- Установить переменную окружения 'GIT_SSH' = 'path\to\plink.exe' (в папке с установленной замазкой) - очень важно !!!
- Перезапустите Windows Explorer, чтобы переменные среды вступили в силу (нельзя перезапустить только командную строку)
- Запустите puttygen.exe для генерации нового ключа, скопируйте открытый ключ на сайт GitHub
- Сохраните этот новый закрытый ключ где-нибудь в безопасности на диске (предпочтительно не Dropbox)
- Запустите putty.exe и подключите SSH к github.co
- Быстро попасть в папку автозагрузки, запустив "shell: startup".
- Запустите свой закрытый ключ с Windows через Pageant. Создайте ярлык в папке автозагрузки с синтаксисом "путь\к\pageant.exe", "путь\к\частному ключу"
- Нам не нужно устанавливать параметр "puttykeyfile" внутри .git/config наших репозиториев
- Очень важно, что "URL-адрес клонирования SSH" GitHub используется, а не HTTPS.
Ответ 9
В Windows для Git 1.7. 9+ выполните следующую команду в командной строке, чтобы открыть файл конфигурации в текстовом редакторе:
git config --global --edit
Затем в файле добавьте следующий блок, если его нет, или измените его соответствующим образом:
[credential "https://giturl.com"]
username = <user id>
helper = wincred
Сохраните и закройте файл. Вам нужно будет предоставить учетные данные только один раз после вышеуказанного изменения.
Ответ 10
Используйте следующую команду, чтобы увеличить время ожидания, чтобы вы могли на некоторое время повторно ввести пароль
git config --global credential.helper 'cache --timeout 3600'
Я использовал его для Bitbucket и GitHub, он работает для обоих. Единственное, что вам нужно сделать, это 3600
в секундах. Увеличьте его до любой степени, которую вы хотите. Я изменил его на 259200
что составляет около 30 дней. Таким образом, я повторяю свой пароль каждые 30 дней или около того.
Ответ 11
Я полагаю, что вы исправили свою проблему, но я не вижу здесь решения, которое помогло мне, так что вот оно.
Введите терминал:
echo "" > ~/.ssh/known_hosts
Это будет пустым ваш файл known_hosts
, и вам нужно будет добавить каждый хост, который вы использовали и связали, но он решил проблему.
Ответ 12
Ответ orkoden на использование цепочки для ключей с Git в вашем терминале был неполным и вызывает ошибки. Вот что вам нужно сделать, чтобы сохранить имя пользователя и пароль, которые вы вводите в терминале в цепочке для ключей:
curl http://github-media-downloads.s3.amazonaws.com/osx/git-credential-osxkeychain -o git-credential-osxkeychain
sudo mv git-credential-osxkeychain /usr/local/bin
sudo chmod u+x /usr/local/bin/git-credential-osxkeychain
Затем введите
git config --global credential.helper osxkeychain
Если вы уже выполнили часть с настройкой Git до curl, это не проблема; это сработает.
Ответ 13
Как указано выше static_rtti, измените
https://github.com/username/repo.git
git://github.com/username/repo.git
в
ssh://[email protected]/username/repo.git
Я сам изменил https
в файле .git/config на ssh
, но он все еще не работал. Тогда я увидел, что вы должны изменить github.com
на [email protected]
. Хороший способ получить действительный правильный URL-адрес - перейти на страницу своего проекта и нажать на эту ссылку:
Измените HTTPS на SSH, чтобы получить правильный URL
Затем добавьте этот URL в файл конфигурации.
Ответ 14
Я согласен с "codehugger" и, используя инструкцию "orkoden", она работала для меня - в NetBeans 7.3 - когда вы щелкаете правой кнопкой мыши по файлу и выбираете контекстное меню - push - открывается окно "push to remote" - есть два варианты здесь:
-
origin:https://github.com/myaccount/myproject.git/
-
https://github.com/myaccount/myproject.git/
Как видите, разница заключается в параметре origin в URL - вы не хотите выбирать эту опцию (1), вы хотите проверить опцию (2), и это прекрасно работает для меня.
Ответ 15
Шаг 1: проверьте текущую конфигурацию
cat .git/config
Ты получишь:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote "origin"]
url = https://github.com/path_to_your_git.git
fetch = +refs/heads/*:refs/remotes/origin/*
[user]
name = your_username
email = your_email
[branch "master-staging"]
remote = origin
merge = refs/heads/master-staging
Шаг 2: удалите ваше удаленное происхождение
git remote rm origin
Шаг 3: добавьте удаленный источник обратно с вашим именем пользователя и паролем
git remote add origin https://your_git_username:[email protected]/path_to_your_git.git
Ответ 16
Существуют разные виды аутентификации в зависимости от вашей конфигурации. Вот несколько из них:
-
git credential-osxkeychain
.
Если ваши учетные данные недействительны, удалите их:
git credential-osxkeychain erase
или же:
printf "protocol=https\nhost=github.com\n" | git credential-osxkeychain erase
Так что Git больше не будет просить у вас разрешения на связку ключей. Затем настройте его снова.
Смотрите: Обновление учетных данных из OS X Keychain на GitHub
-
Ваш ключ SSH RSA.
Для этого вам нужно сравнить ваш ключ SSH с тем, что вы добавили, проверьте с помощью ssh-add -L
/ssh-add -L
ли вы используете идентификацию.
-
Ваша аутентификация HTTPS (если вы используете https
вместо протокола ssh
).
Используйте ~/.netrc
(%HOME%/_netrc
в Windows), чтобы предоставить свои учетные данные, например
machine stash1.mycompany.com
login myusername
password mypassword
Узнайте больше: Синхронизация с GitHub при переполнении стека.
Ответ 17
Прежде чем вы сможете использовать свой ключ с GitHub, выполните этот шаг в руководстве, Проверка вашего SSH-соединения:
$ ssh -T [email protected]
# Attempts to ssh to GitHub
Ответ 18
Наличие опечатки в URL заставит Git запрашивать у вас имя пользователя и пароль, глупый Git.
Он был протестирован на Kali Linux, Git версии 2.7.0,
Пытаться:
git clone https://github.com/thisrepodoesntexists/doesntexists.git
Ответ 19
Если вы используете Windows, и это неожиданно начало происходить неожиданно на GitHub, это, вероятно, связано с тем, что GitHub недавно отключил поддержку устаревших криптографических алгоритмов на 2018-02-22, и в этом случае решение заключается в простой загрузке и установке. последняя версия либо полного Git для Windows, либо просто Git Credential Manager для Windows.
Ответ 20
Я чувствую, что ответ, предоставленный static_rtti, в некотором смысле хакерский. Я не знаю, было ли это доступно ранее, но инструменты Git теперь предоставляют хранилище учетных данных.
Режим кэширования
$ git config --global credential.helper cache
Используйте режим "кэш", чтобы хранить учетные данные в памяти в течение определенного периода времени. Ни один из паролей никогда не хранится на диске, и они удаляются из кэша через 15 минут.
Режим магазина
$ git config --global credential.helper 'store --file ~/.my-credentials'
Используйте режим "Хранилище", чтобы сохранить учетные данные в виде простого текстового файла на диске, и они никогда не истекают.
Я лично использовал режим магазина. Я удалил свой репозиторий, клонировал его, а затем мне пришлось один раз ввести свои учетные данные.
Ссылка: 7.14 Git Tools - Хранение учетных данных
Ответ 21
Если Git запрашивает у вас имя пользователя и пароль каждый раз, когда вы пытаетесь взаимодействовать с GitHub, вы, вероятно, используете URL-адрес клонирования HTTPS для своего хранилища.
Использование удаленного URL-адреса HTTPS имеет ряд преимуществ: его проще настроить, чем SSH, и обычно он работает через строгие брандмауэры и прокси-серверы. Тем не менее, он также предлагает вам вводить учетные данные GitHub каждый раз, когда вы извлекаете или перемещаете хранилище.
Вы можете настроить Git для хранения вашего пароля. Для Windows:
git config --global credential.helper wincred