18 ответов:
1. Сгенерировать ключ SSH
Linux / Mac
откройте терминал для создания ssh ключей:
cd ~ #Your home directory ssh-keygen -t rsa #Press enter for all valuesДля Windows
(работает только в том случае, если программа фиксации способна использовать сертификаты/закрытые и открытые ключи ssh)
- используйте Putty Gen для создания ключа
- экспорт ключа в виде открытого ключа 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.pub3. Установите удаленный 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:
- щелкните правой кнопкой мыши на директории, чтобы нажать и выбрать "Git Bash Here".
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
для клонирования, с помощью "ЖКТ URL-адрес клонировать" после изменения URL-адреса из формата, в HTTP://{мой_логин}@{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 .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
- Установить пароль на удаленного git URL-адреса как : "удаленный set_url ГИТ происхождения адресу http://{мой_логин}:{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>The
--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>
Шаг 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