Как избежать спецификации имени пользователя и пароля при каждом нажатии git?
Я git push
моя работа в удаленном репозитории Git.
push
предложит мне ввести username
и password
. Я хотел бы избежать этого для каждого толчка, но как настроить, чтобы этого избежать? 18 ответов
1. Сгенерировать ключ SSH
Linux / Mac
открыть терминал для создания ssh ключей:
cd ~ #Your home directory
ssh-keygen -t rsa #Press enter for all values
Для Windows
(работает только если программа фиксации способна использовать сертификаты / частные и открытые ssh-ключи)
- используйте Putty Gen для генерации ключа
- экспорт ключа в виде открытого ключа SSH
здесь прохождение на putty gen для вышеуказанного шаги
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://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] Этот раздел включает в себя ответ от Эрик Р
постоянная аутентификация с репозиториями 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 часа).
Примечание: помощник учетных данных, хранящий незашифрованный пароль на локальном диске.
если вы уже настроили ключи 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
просто использовать --repo
опция для команды git push. Вот так:
$ git push --repo https://name:password@bitbucket.org/name/repo.git
Сохранение На Неопределенный Срок
можно использовать git-credential-store via
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", который кэширует учетные данные в secure keychain, прикрепленный к вашей учетной записи системы. Этот метод хранит учетные данные на диске, и они никогда не истекают, но они зашифрованы с той же системой, которая хранит сертификаты HTTPS и автозаполнения Safari.
- если вы используете Windows, вы можете установите помощник под названием " Диспетчер учетных данных Git для Windows." это похоже на описанный выше помощник "osxkeychain", но использует хранилище учетных данных Windows для управления конфиденциальной информацией. Это может быть найдено вhttps://github.com/Microsoft/Git-Credential-Manager-for-Windows. [подчеркивает мое]
я использовал https-ссылку (https://github.com/org/repo.git
)
вместо ссылки ssh;
git@github.com: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:
- щелкните правой кнопкой мыши в каталоге, чтобы нажать и выбрать "Git Bash здесь".
-
ssh-keygen -t rsa
(нажмите Enter для всех значений) - Проверьте терминала:
Your public key has been saved in /c/Users/<your_user_name_here>/.ssh/id_rsa.pub
- копировать открытый ключ из указанного файла.
- перейдите в свой профиль 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
для клонирования используйте "git clone URL" после изменения URL-адреса из формата http://{myuser}@{my_repo_ip_address}/{myrepo_name.git} к http:/ / {myuser}: {mypwd}@{my_repo_ip_address} / {myrepo_name.git}
очистить хранилище паролей как в следующем разделе.
очистка
теперь, это пошло бы и
- написал пароль в git remote происхождение. Введите "git remote-v", чтобы увидеть повреждения. Исправьте это, установив URL-адрес удаленного источника без пароля. "git remote set_url origin http:/ / {myuser}@{my_repo_ip_address} / {myrepo_name.git}"
- записал пароль .git / logs в репозитории. Замените все экземпляры pwd с помощью команды unix, такой как find .ЖКТ/журналы -экзек СЕПГ -я с/{my_url_with_pwd}//г' {} \; Здесь {my_url_with_pwd} - это URL с паролем. Поскольку URL-адрес имеет косые черты, он должен быть экранирован двумя обратные взмахи. Например, для URL http://kris:passs123@192.168.0.1/proj.git -> http:\\/\\/kris:passs123@192.168.0.1\\/proj.git
Если приложение использует Java для выполнения этих команд, используйте ProcessBuilder вместо среды выполнения. Если необходимо использовать среду выполнения, используйте getRunTime ().exec, который принимает массив строк в качестве аргументов с /bin / bash и-c в качестве аргументов, а не тот, который принимает одну строку в качестве аргумента.
GIT FETCH/PULL/PUSH
- Задайте пароль в удаленном url-адресе Git как: "git remote set_url origin http:/ / {myuser}: {mypwd}@{my_repo_ip_address} / {myrepo_name.git}"
- выполните команду git fetch/push / pull. Вы не будет предложено ввести пароль.
- выполните очистку, как в предыдущем разделе. Не пропустите его.
если ваш компьютер находится в безопасности и вы не заботитесь о безопасности паролей, это может быть достигнуто очень просто. При условии, что удаленный репозиторий на GitHub и origin
ваше локальное имя для удаленного репозитория, используйте эту команду
git remote set-url --push origin https://<username>:<password>@github.com/<repo>
на --push
флаг гарантирует, что это изменит URL-адрес репозитория для только. (Вопрос, заданный в исходном сообщении, касается только. Требование имени пользователя+пароля только для операций push является нормальная настройка для общественные репозитории на GitHub . Обратите внимание, что частная репозитории на GitHub также потребуют имя пользователя+пароль для операций извлечения и извлечения, поэтому для частного репозитория вы не захотите использовать --push flag
...)
предупреждение: это по своей сути небезопасно, потому что:
ваш интернет-провайдер или любой, кто регистрирует доступ к сети, может легко см. пароль в простом тексте в URL-адрес;
любой, кто получает доступ к вашему ПК, может просматривать ваш пароль с помощью
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-agent, используя следующую команду
ssh-add ~/.ssh/id_rsa
Шаг 4 -
Теперь добавить удаленный url git@github.com:user_name/repo_name.git для вашего локального репозитория git, используя команду ниже.
git remote remove origin
git remote add origin git@github.com: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/