Linux git не вводить пароль

Обновлено: 03.07.2024

Я клонировал репозиторий Git из своей учетной записи GitHub на свой компьютер.

Я хочу работать как со своим ПК, так и с ноутбуком, но с одной учетной записью GitHub.

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

Вот что сработало для меня:

Шаг 1: перейдите в корневой каталог

Создать файл .git-credentials

Добавьте это содержание в этот файл вместе с вами usename password и githosting URL

Затем выполните команду

Теперь вы сможете без проблем извлекать все детали из репозитория.

Обновление файла конфигурации Git напрямую ( если вы не хотите запоминать причудливые команды ):

Откройте файл .git/config в вашем любимом текстовом редакторе. Он будет в папке, которую вы клонировали, или в репозитории, в котором вы выполнили git init . Войдите в этот репозиторий. .git - это скрытая папка, и нажатие Ctrl + H должно показать скрытую папку ( ls -a в терминале).

Ниже приведен образец файла .git/config . Скопируйте и вставьте эти строки и обязательно обновите эти строки своей информацией Git.

Измените часть URL-адреса на следующий формат для SSH:

( Вышеуказанные форматы не меняются с различными удаленными серверами Git, такими как GitHub или Bitbucket. То же самое, если вы используете Git для контроля версий ):

Примечание. Способ подключения к удаленному репозиторию Git по SSH потребует от вас добавления общедоступного SSH-ключа на удаленный сервер Git (, например, GitHub или Bitbucket. Найдите на странице настроек ключи SSH ).

Чтобы узнать, как сгенерировать ключи SSH, обратитесь к: Создание ключей SSH

Я была такая же проблема.

Итак, я изменил файл .git/config из своего проекта,

И добавил открытый ключ SSH в профиль Git, который находится в настройке.

Для открытого ключа SSH:

По умолчанию учетные данные будут сохранены в файле

/.git-credentials . Он будет создан и записан в.

Обратите внимание, что при использовании этого помощника ваши пароли будут храниться на диске в незашифрованном виде, защищенном только разрешениями файловой системы. Если это не может быть приемлемым компромиссом в плане безопасности.

Вот еще вариант:

Вместо того чтобы писать

Вы могли написать:

Очевидно, что с большинством оболочек это приведет к кешированию пароля в истории, так что имейте это в виду.

Если у вас включена двухфакторная аутентификация в вашей учетной записи Github, ваш обычный пароль не подойдет для этой цели, но вы можете сгенерировать токен личного доступа и использовать его вместо него.

generate GitHub personal access token

На странице отобразится новое значение токена. Сохраните это значение и используйте его вместо пароля при отправке в репозиторий на GitHub:

Что сработало для меня, так это отредактировать .git/config и использовать

Само собой разумеется, что это небезопасный способ хранения вашего пароля, но есть среды / случаи, когда это может не быть проблемой.

Вы можете кэшировать свой пароль GitHub в Git:

Следуя инструкциям по приведенной выше ссылке, вы сможете отправлять / извлекать в / из репозитория, не вводя каждый раз свое имя пользователя / пароль.

Как настроить remote.origin.url :

@Update - с помощью ssh

Грубые шаги:

  • Создайте ключи ssh с помощью команды, например ssh-keygen в Linux, в Windows msysgit предоставьте аналогичные команды.
  • Храните закрытый ключ на локальном компьютере в нужном месте, например,

Советы:

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

Достаточно просто изменить remote.origin.url , или вы можете отредактировать repo_home/.git/config напрямую, чтобы изменить значение (например, используя vi в Linux).

Например,

Следующая команда сохранит ваш пароль в памяти на некоторое время (для Git 1.7.10 или новее).

Если вы используете SSH и ваш закрытый ключ зашифрован кодовой фразой, то вам все равно будет предложено ввести кодовую фразу / пароль для закрытого ключа при выполнении сетевых операций с Git как push , pull и fetch .

Используйте ssh-agent, чтобы сохранить парольную фразу / пароль секретного ключа.

Если вы не хотите вводить кодовую фразу каждый раз, вы можете использовать ssh-agent для сохранения учетных данных секретной ключевой фразы один раз за сеанс терминала, как я объясняю в мой ответ на Не удалось открыть соединение с вашим агентом аутентификации :

В Windows msysgit Bash вам необходимо оценить вывод ssh-agent , но я не уверен, нужно ли вам делать то же самое в других средах разработки и операционных системах.

ssh-add ищет закрытый ключ в вашей домашней папке .ssh с именем id_rsa , которое является именем по умолчанию, но вы можете передать путь к файлу ключу с другим именем.

Убить агента

Когда вы закончите сеанс терминала, вы можете завершить работу ssh-agent с помощью флага уничтожения -k :

Убить текущего агента (заданного переменной среды SSH_AGENT_PID).

Дополнительный тайм-аут

Кроме того, он может принимать необязательный параметр тайм-аута, например:

Где <timeout> имеет формат <n>h для <n> часов, <n>m для <n> минут и т. д.

Задайте значение по умолчанию для максимального времени жизни идентификаторов, добавленных к агенту. Время жизни может быть указано в секундах или в формат времени, указанный в sshd_config (5 ). Время жизни, указанное для удостоверения с помощью ssh-add (1) переопределяет это значение. Без этой опции максимальное время жизни по умолчанию - вечно.

Предупреждение безопасности для пользователей Cygwin

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

Что ответит чем-то вроде

Затем вы можете запустить команду, которую предлагали многие другие, но теперь вы знаете свое имя и репозиторий сверху, так что вы можете просто вырезать и вставить yourname/yourrepo.git из приведенного выше в:

Дополнение (см. второй комментарий VonC): в Windows имя файла - %HOME%\_netrc .

Также прочтите первый комментарий VonC, если вы хотите зашифровать.

Еще одно дополнение (см. комментарий пользователя 137717), которое вы можете использовать, если у вас Git 1.7.10 или новее .

Это также работает в Linux, Mac и Windows.

Теперь вы можете проверить с помощью только ключа SSH вместо username и password .

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

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

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

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

Если вы не сгенерировали SSH-ключ на своем компьютере, вам придется это сделать.

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

В моем случае проблема заключалась в том, что я использовал оболочку Windows для выполнения команды ngh; поскольку эта команда должна открывать приглашение для запроса фразы SSH, а оболочка Windows не открывает такие запросы, аутентификация просто не удалась.

Итак, мне просто нужно было открыть оболочку Git и выполнить там команду ngh, вставить фразу SSH в командную строку каждый раз, когда она просила об этом, и «вуаля» . Все отлично сработало!

Это приложение сохранит для вас имя пользователя и пароль .

Перечислите ваши текущие ключи SSH:

Создайте новый ключ SSH:

Теперь файлы id_ed25519 и id_ed25519.pub должны быть добавлены.
Запустите ssh-agent в фоновом режиме:

Добавьте свой закрытый ключ SSH в ssh-agent:

Затем выведите открытый ключ на экран терминала:

Затем cd .. в родительский каталог и rm -fr <name-of-your-repo> .
Наконец, клонируйте новую копию, которая использует SSH вместо имени пользователя / пароля:

Вам нужно выполнить два шага -

Enter image description here

Для пользователей Windows Git, если после запуска git config --global credential.helper store он все еще запрашивает пароль, вам лучше проверить, куда записан файл конфигурации, с помощью этой команды

В моем случае после ручного редактирования файла конфигурации 'C: \ Program Files \ Git \ mingw64 \ etc \ gitconfig' и добавления следующего текста это сработало.

Как только вы запустите программу, она отредактирует ваш файл .gitconfig . Еще раз проверьте, правильно ли он редактировал .gitconfig , если у вас их несколько. Если он не отредактировал правильный, добавьте следующее в свой .gitconfig

ОБРАТИТЕ ВНИМАНИЕ на разрыв строки после [credential] . Требуется.

Откройте клиент командной строки и попробуйте git push origin master один раз. Если он запрашивает пароль, введите его, и все готово. Пароль сохранен!

У вас в основном есть два варианта.

Если вы используете одного и того же пользователя на обеих машинах, вам необходимо скопировать ключ .pub на свой компьютер, чтобы GitHub знал, что вы один и тот же пользователь.

Если вы создали новый файл .pub для своего ПК и хотите рассматривать машины как разных пользователей, вам необходимо зарегистрировать новый файл .pub на веб-сайте GitHub.

Если это по-прежнему не работает, это может быть связано с тем, что ssh неправильно настроен и ssh не может найти расположение ваших ключей. Пытаться

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

Linux / Mac

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

Для Windows

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

    если это репозиторий GitHub и у вас есть права администратора, перейдите к настройки и нажмите кнопку "добавить ключ SSH". Скопируйте содержимое вашего

если вы выполнили описанные выше действия и все еще получаете запрос пароля, убедитесь, что Ваш URL-адрес РЕПО находится в форме

в отличие от к

чтобы увидеть URL вашего РЕПО, выполните:

вы можете изменить URL-адрес:

[1] в этом разделе содержится ответ от Эрик Р

постоянная аутентификация с помощью репозиториев Git,

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

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

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

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

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

в противоположность

чтобы увидеть URL вашего РЕПО, выполните:

вы можете изменить URL с помощью git remote set-url вот так:

просто использовать --repo опция для команды git push. Вот так:

Сохранение На Неопределенный Срок

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

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

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

с таймаутом

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

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

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

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

например

  1. щелкните правой кнопкой мыши на директории, чтобы нажать и выбрать "Git Bash Here".
  2. ssh-keygen -t rsa (нажмите Enter для всех значений)
  3. Проверьте терминала: Your public key has been saved in /c/Users/<your_user_name_here>/.ssh/id_rsa.pub
  4. копировать открытый ключ из указанного файла.
  5. перейдите в свой профиль GitHub = > настройки = > SSH и GPG ключи = > новый SSH ключ = > вставьте свой SSH ключ там = > сохранить

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

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

  1. написал пароль в git remote происхождение. Введите "git remote-v", чтобы увидеть повреждения. Исправьте это, установив URL-адрес удаленного источника без пароля. "git remote set_url origin http:/ / @ / "
  2. записал пароль .git / logs в репозитории. Замените все экземпляры pwd с помощью команды unix, такой как find .git / logs-exec sed-i 's / / / g' <> \; Здесь - это URL-адрес с паролем. Поскольку URL-адрес имеет косую черту, он должен быть экранирован двумя обратные косые черты. Например, для URL http://kris:passs123@192.168.0.1/proj.ГИТ -> http:\\/\\/kris:passs123@192.168.0.1\\/proj.ГИТ
  1. Установить пароль на удаленного git URL-адреса как : "удаленный set_url ГИТ происхождения адресу http://:@/"
  2. введите команду git fetch/push / pull. Вы не будет предложено ввести пароль.
  3. выполните очистку, как в предыдущем разделе. Не пропустите его.
  1. ваш интернет-провайдер или любой, кто регистрирует доступ к сети, может легко см. пароль в виде обычного текста в разделе URL;

  2. любой, кто получает доступ к вашему компьютеру, может просмотреть ваш пароль с помощью git remote show origin .

вы должны настроить SSH закрытый ключ, вы можете просмотреть это страница, Как сделать установку на Mac, Если вы находитесь на linux руководство должно быть почти то же самое, на Windows вам понадобится инструмент, как MSYS.

Шаг 1.

создайте SSH-ключи в своей системе linux, используя следующую команду

Он будет запрашивать пароль и имя файла (по умолчанию

похоже, что, по крайней мере, при использовании TortoiseGIT в Windows, можно создать ключи SSH и передать их на сервер GIT, используя просто:

Я создал пустое РЕПО в github, а затем .

вы должны настроить удаленный URL ssh, как описано выше.

запуск команды ниже решил проблему для меня.

пожалуйста, обратитесь к приведенной ниже документации github:

Я хочу использовать push и pull автоматически в GitExtension, без ввода моего пользователя и пароля в приглашении, каждый раз.

Итак, как я могу сохранить свои учетные данные в git ?

Укажите имя пользователя и пароль, и эти данные будут запомнены позже. Учетные данные хранятся на диске с разрешениями на диск.

если вы хотите изменить пароль позднее

указать новый пароль и он будет работать как раньше.

можно использовать git config чтобы включить хранение учетных данных в git

при выполнении этой команды в первый раз, когда вы потянете или нажмете из удаленного репозитория, вас спросят об имени пользователя и пароле.

после этого, для последующей связи с удаленным репозиторием вам не нужно указывать имя пользователя и пароль.

формат хранения a . git-credentials файл, сохраненный в открытом тексте.

также вы можете использовать другие помощники для учетных данных конфигурации git.помощник, а именно кэш :

что происходит timeout parameter , определяя, как долго его деймон должен работать и default значение этого 900 seconds (15 minutes).

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

в терминале введите следующее:

по умолчанию Git будет кэшировать ваш пароль в течение 15 минут.

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

вы можете редактировать до магазине код полномочия

который уже должны есть!--11-->

вы должны добавить в нижней части этого файла.

причина, по которой я рекомендую этот вариант, - это то, что он глобальный, и если в какой-то момент вам нужно удалить опцию, вы знаете, куда пойти и изменить ее.

ИСПОЛЬЗУЙТЕ ЭТУ ОПЦИЮ ТОЛЬКО В ВАШЕМ ПЕРСОНАЛЬНОМ КОМПЬЮТЕРЕ.

затем когда вы потянете| клонируете / вводите пароль git, в общем, пароль будет сохранен в

/.git-credentials в формате

вы можете установить свое имя пользователя и пароль следующим образом:

вы будете более безопасны, если вы используете аутентификацию SSH, чем аутентификацию имени пользователя / пароля.

Если вы используете Mac, аутентификация клиента SSH интегрирована в связку ключей MacOS. После того как вы создали ключ SSH, введите в терминале:

это добавит закрытый ключ SSH в связку ключей MacOS. Клиент git будет использовать ssh при подключении к удаленному серверу. Пока вы зарегистрировали свой открытый ключ ssh на сервере, вы будете быть хорошо.

просто поместите учетные данные в Url-адрес следующим образом:

вы можете магазине это:

. пример использовать это:

вот это список URL-адрес псевдонимы:

. и что команда удалить одну из них:

git remote rm myrepo

в этом случае вам нужен git Credential helper, чтобы сказать git, чтобы запомнить пароль и имя пользователя GitHub, используя следующую командную строку:

и если вы используете repo с помощью SSH-ключа, вам нужен SSH-ключ для аутентификации.

вы можете использовать git-credential-store для хранения незашифрованных паролей на диске, защищенных только разрешениями файловой системы.

Я уже некоторое время пользуюсь Git, но постоянные запросы на ввод пароля приводят меня в движение.

Я использую Mac OS X и GitHub, и я настроил Git и мои SSH-ключи в соответствии с инструкциями на странице GitHub Set Up Git .

Тем не менее, каждый раз, когда я пытаюсь Git pull, мне приходится вводить свое имя пользователя и пароль. Есть ли что-то кроме ключа SSH, который мне нужно настроить для этого?

Глупый вопрос, но вы убедились, что ключ SSH работает, когда просто используете ssh на машине с git? Я пользователь Windows, и я также столкнулся с проблемой запроса пароля даже после добавления моего открытого ключа в файл author_keys сервера. В действительности проблема заключалась в том, что я не держал свои открытые / закрытые ключи в папке .ssh в папке c: \ program files \ git. Если кто-то сталкивается с такой проблемой, пожалуйста, скопируйте ваши ключи в эту папку и попробуйте нажать / потянуть.

Я думаю, что у вас неправильный URL Git-репозитория.

Откройте .git/config и найдите раздел [remote "origin"]. Убедитесь, что вы используете SSH:

Вы можете увидеть SSH URL на главной странице вашего репозитория, если вы нажмете Clone или загрузите и выберите ssh .

Теперь вы можете проверить с помощью только ключа SSH вместо имени пользователя и пароля.

Если Git жалуется 'origin' has already been added , откройте .config файл и отредактируйте url = ". " часть после того, [remote origin] как url = ssh://github/username/repo.git

То же самое касается других услуг. Убедитесь, что адрес выглядит так: protocol://something@url

Например, .git/config для Azure DevOps:

Либо исправьте URL-адрес в файле .git / config, либо используйте git-remote для его исправления, либо удалите локальное хранилище и снова клонируйте его с правильным URL-адресом.

Настройка credential.helper

На OS X (теперь macOS), запустите это в Терминале :

Это позволяет Git использовать файл Keychain.app для хранения имени пользователя и пароля, а также для получения ключевой фразы для вашего личного ключа SSH из цепочки для ключей.

Для Windows используйте:

Поиск проблемы

Если помощник по учетным данным Git настроен правильно, macOS сохраняет фразу-пароль в цепочке для ключей. Иногда связь между SSH и парольными фразами, хранящимися в цепочке для ключей, может разорваться. Запустите ssh-add -K или, ssh-add

/.ssh/id_rsa чтобы снова добавить ключ в связку ключей.

macOS v10.12 (Sierra) меняется на SSH

Для macOS v10.12 (Sierra) ssh-add -K необходимо запускать после каждой перезагрузки. Чтобы избежать этого, создавайте

/.ssh/config с этим контентом.

Со ssh_config man страницы 10.12.2:

UseKeychain

В macOS указывает, должна ли система искать ключевые фразы в цепочке для ключей пользователя при попытке использовать определенный ключ. Когда пароль предоставляется пользователем, этот параметр также указывает, следует ли сохранять фразу-пароль в цепочке для ключей после того, как она будет проверена на правильность. Аргумент должен быть «да» или «нет». По умолчанию «нет».

Apple добавила Technote 2449, который объясняет, что произошло.

До macOS Sierra отображало ssh диалоговое окно с запросом вашей парольной фразы и предлагало сохранить ее в цепочке для ключей. Этот интерфейс был объявлен устаревшим некоторое время назад и был удален.

Вам нужен git 1.7.10 или новее, чтобы использовать помощник по учетным данным. Спасибо за обновление Sierra, я только что обновил и не мог понять, почему github продолжал запрашивать pw, когда я добавил git config --global credential.helper osxkeychain файл конфигурации в мой .ssh каталог, исправил меня.

Это случилось со мной, когда я обновил MacOS до версии 10.12 (Sierra). Похоже, агент SSH был очищен при обновлении.

Просто бег ssh-add обнаружил мою существующую личность. Я ввел пароль, и было хорошо, чтобы пойти снова.

Читайте также: