Как избежать указания имени пользователя и пароля при каждом нажатии git?



Я git push моя работа в удаленном репозитории Git.



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

18 ответов:

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 и у вас есть права администратора, перейдите к настройки и нажмите кнопку "добавить ключ 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://[email protected]/username/reponame.git

в отличие от к

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

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

git remote show origin

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

git remote set-url origin git+ssh://[email protected]/username/reponame.git

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

постоянная аутентификация с помощью репозиториев 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 часа).

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

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

git+ssh://[email protected]/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://[email protected]/username/reponame.git

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

$ git push --repo https://name:[email protected]/name/repo.git

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

можно использовать 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 for Windows." это похоже на описанный выше помощник "osxkeychain", но использует хранилище учетных данных Windows для управления конфиденциальной информацией. Это может быть найдено по адресуhttps://github.com/Microsoft/Git-Credential-Manager-for-Windows. [подчеркивает мое]

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

[email protected]:org/repo.git  

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

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

git config --global credential.helper wincred

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

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

в операционной системе 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

мое решение на 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 ключ там = > сохранить

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

git config credential.helper store

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

все это возникает из-за того, что git не предоставляет опцию в командах clone/pull/push/fetch для отправки учетных данных через канал. Хотя это дает верительные грамоты.помощник, он хранит в файловой системе или создает демон и т. д. Часто учетные данные GIT являются системными, и ответственность за их безопасность лежит на приложении, вызывающем команды git. Очень небезопасно.

вот что мне пришлось обойти. 1. Версия Git (git --version) должна быть больше или равна 1.8.3.

GIT CLONE

для клонирования, с помощью "ЖКТ URL-адрес клонировать" после изменения URL-адреса из формата, в HTTP://{мой_логин}@{my_repo_ip_address}/{myrepo_name.git} в http:/ / {myuser}: {mypwd}@{my_repo_ip_address} / {myrepo_name.git}

очистить хранилище паролей как в следующем разделе.

очистка

теперь, это пошло бы и

  1. написал пароль в git remote происхождение. Введите "git remote-v", чтобы увидеть повреждения. Исправьте это, установив URL-адрес удаленного источника без пароля. "git remote set_url origin http:/ / {myuser}@{my_repo_ip_address} / {myrepo_name.git}"
  2. записал пароль .git / logs в репозитории. Замените все экземпляры pwd с помощью команды unix, такой как find .git / logs-exec sed-i 's / {my_url_with_pwd} / / g' {} \; Здесь {my_url_with_pwd} - это URL-адрес с паролем. Поскольку URL-адрес имеет косую черту, он должен быть экранирован двумя обратные косые черты. Например, для URL http://kris:[email protected]/proj.ГИТ -> http:\\/\\/kris:[email protected]\\/proj.ГИТ

Если ваше приложение использует Java для выполнения этих команд, используйте ProcessBuilder вместо Runtime. Если необходимо использовать Runtime, используйте getRunTime ().exec, который принимает массив строк в качестве аргументов с /bin / bash и-c в качестве аргументов, а не тот, который принимает одну строку в качестве аргумента.

GIT FETCH / PULL / PUSH

  1. Установить пароль на удаленного git URL-адреса как : "удаленный set_url ГИТ происхождения адресу http://{мой_логин}:{mypwd}@{my_repo_ip_address}/{myrepo_name.git}"
  2. введите команду git fetch/push / pull. Вы не будет предложено ввести пароль.
  3. выполните очистку, как в предыдущем разделе. Не пропустите его.

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

git remote set-url --push origin https://<username>:<password>@github.com/<repo>

The --push флаг гарантирует, что это изменяет URL репозитория для только. (Вопрос, заданный в исходном сообщении, касается только. Требуется имя пользователя + пароль только для операций push-это нормальная настройка для общественные репозитории на GitHub . Обратите внимание, что частная репозитории на GitHub также потребуют имя пользователя+пароль для операций извлечения и извлечения, поэтому для частного репозитория вы не захотите использовать --push flag ...)

предупреждение: это по своей сути небезопасно, потому что:

  1. ваш интернет-провайдер или любой, кто регистрирует доступ к сети, может легко см. пароль в виде обычного текста в разделе URL;

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

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

даже ключ SSH-это не совсем безопасно. Любой, кто получает доступ к вашему компьютеру, может, например, сделать толчки, которые разрушают ваш репозиторий или, что еще хуже, push - коммиты, вносящие тонкие изменения в ваш код. (Все нажатые коммиты, очевидно, хорошо видны на GitHub. Но если кто-то хотел изменить ваш код тайно, они могли --amend предыдущая фиксация без изменения сообщения фиксации, а затем принудительно нажмите ее. Это было бы незаметно и довольно трудно заметить на практике.)

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


как вариант - для простоты и безопасность - вы можете поставить только ваше имя пользователя в URL, так что вам придется вводить пароль каждый раз, когда вы git push но вам не придется давать свое имя пользователя каждый раз. (Мне очень нравится этот подход, вводя пароль дает мне паузу, чтобы думать каждый раз, когда я git push, так что я не могу git push случайно.)

git remote set-url --push origin https://<username>@github.com/<repo>

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

Шаг 1.

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

ssh-keygen -t rsa -b 4096 -C "your_email"

Он будет запрашивать пароль и имя файла (по умолчанию ~/.ssh / id_rsa,~/.ssh / id_rsa.паб)

Шаг 2.

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

Шаг 3.

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

ssh-add ~/.ssh/id_rsa 

Шаг 4 -

Теперь добавить [email protected]:user_name/repo_name.git удаленного URL-адреса на локальный репозиторий Git, используя следующую команду.

git remote remove origin
git remote add origin [email protected]:user_name/repo_name.git

вот и все.

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

> ssh-keygen.exe
> ssh-copy-id [username]@[GIT_server]

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

git push -u origin master

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

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

git config --global credential.helper wincred

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

https://help.github.com/articles/caching-your-github-password-in-git/

Comments

    Ничего не найдено.