Я клонировал Git-репозиторий из своей учетной записи GitHub на свой компьютер.
Я хочу работать как с ПК, так и с ноутбуком, но с одной учетной записью GitHub.
Когда я пытаюсь нажать или вытащить из GitHub с помощью ПК, он требует имя пользователя и пароль, но не при использовании ноутбука!
Я не хочу вводить свое имя пользователя и пароль каждый раз, когда я взаимодействую с origin. Что я здесь упускаю?
Распространенной ошибкой является клонирование с использованием протокола по умолчанию (HTTPS) вместо SSH. Вы можете исправить это, зайдя в свой репозиторий, нажав "Клонировать или загрузить", затем нажав кнопку "Использовать SSH" над полем URL и обновив URL вашего удаленного источника следующим образом:
git remote set-url origin [email protected]:username/repo.git
Это документировано на GitHub: Switching remote URLs from HTTPS to SSH.
Выполните следующую команду, чтобы включить кэширование учетных данных:
$ git config credential.helper store
$ git push https://github.com/owner/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 вместо HTTPS:
ssh://[email protected]/username/repo.git
А не этот:
https://github.com/username/repo.git
Теперь вы можете проверять с помощью только ключа SSH вместо имени пользователя
и пароля
.
Помимо изменения для СШ вы также можете продолжать использовать протокол HTTPS, если вы не'т ум, чтобы положить пароль в виде открытого текста. Положите это в ваш~/.netrc ПО и он выиграл'т просить Ваш логин/пароль (по крайней мере на Linux и Mac):
machine github.com
login <user>
password <password>
Дополнение (см. VonC's во-вторых, комментарий): на Windows имя файла %дома%_netrc\
.
Также читайте VonC'Первый комментарий в случае, если вы хотите зашифровать.
Еще одно дополнение (см. user137717'ы комментарий), которые вы можете использовать, если у вас есть мерзавец 1.7.10 или новее.
Кэш на GitHub пароль в Git используя удостоверение помощника:
если вы'повторного клонирования репозиториев GitHub через HTTPS, вы можете использовать учетными данными помощником, чтобы сказать Git, чтобы помнить ваше имя пользователя GitHub и пароль каждый раз, когда она говорит на GitHub.
Это также работает на Linux, Mac и Windows.
Для непосвященных, кого смущает предыдущие ответы, вы можете сделать:
git remote -v
Что ответит что-то вроде
origin https://[email protected]/yourname/yourrepo.git (fetch)
origin https://[email protected]/yourname/yourrepo.git (push)
Затем можно выполнить команду многие другие предложили, но теперь вы знаете вашеимя и yourrepo сверху, так что вы можете просто вырезать и вставить вашеимя/yourrepo.ГИТ
от указанных в:
git remote set-url origin [email protected]:yourname/yourrepo.git
Если вы're через SSH и ваш закрытый ключ защищен паролем, то вы'll по-прежнему будет предложено ввести пароль/пароль для закрытого ключа, когда вы делаете сетевых операций с Git,, как толчок
, тянуть
, и "взять".
Если вы хотите, чтобы избежать необходимости вводить ваш пароль каждый раз, вы можете использовать SSH-агента, чтобы сохранить ваш пароль для закрытого ключа учетные данные один раз в терминальной сессии, как я объясняю в разделе Мой ответ не удалось открыть подключение к аутентификации агентов:
$ eval `ssh-agent -s`
$ ssh-add
В Windows msysgit Баш, нужно оценить результат `SSH-агента, но я'м не уверен, если вы должны сделать то же самое в других средах разработки и операционных системах.
СШ-добавить
ищет секретного ключа в ваш дом.папка СШназывается
id_rsa`, который является именем по умолчанию, но вы можете пройти путь к ключу с другой фамилией.
Когда вы'повторно сделали с вашей терминальной сессии, вы можете выключение SSH-агента
с убейте флаг -к
:
$ ssh-agent -k
Как объяснено в SSH-агента
руководство:
-к убить текущего агента (данное SSH_AGENT_PID переменной окружения).
Кроме того, он может принимать необязательный параметр timeout вот так:
$ ssh-add -t <timeout>
где в <тайм-аут>
в формате <п>H
Для в <п>
часов, <п>м
в в `<п> минут, и так далее.
Согласно SSH-агента
руководство:
-Т жизнь установить значение по умолчанию для максимального времени жизни личности добавил к агенту. Срок службы может быть указано в секундах или в формат времени указан в файл sshd_config(5). Указан срок для удостоверения с СШ-добавить(1) переопределяет это значение. Без этой опции по умолчанию максимальная продолжительность жизни-это навсегда.
См. эту страницу для более форматы времени.
Пользователи с Cygwin должен быть в курсе потенциальный риск безопасности с помощью SSH-агента в Cygwin:
люди должны быть осведомлены о потенциальной опасности SSH-агента под Cygwin 1, хотя по местным netstat и дистанционного приложение не похоже, что порт, указанный в /tmp/СШ-Фу является доступной для каждого ...?
На вышеуказанной ссылке]7:
однако, обратите внимание, что с Cygwin'ы и Unix-сокетов являются FUNDAMENTALLY INSECURE и поэтому я решительно DISCOURAGE использование SSH-агента под Cygwin.
когда вы запустите SSH-агент под Cygwin того, он создает сокет в
/tmp/СШ-$имя_пользователя/ каталог. Под Cygwin AF_UNIX сокетов эмулируются через сокеты равен af_inet. Вы можете легко увидеть, что если вы'будете искать в каталоге
/tmp/СШ-$имя пользователя/агента-гнездо-*` файл через Блокнот. Вы'll увидеть что-то вроде!<гнездо >2080
затем выполните команду netstat-A
и сюрприз! У вас какая программа слушает порт 2080. Это'ы СШ-агент. Когда СШ получает ОГА вызов от сервера, он относится к соответствующей каталоге
/tmp/СШ-$имя пользователя/агента-гнездо-*(под Cygwin, в нашем случае, это означает, что он'МР открыть подключение к локальным
localhost:2080`) и просит SSH-агента для обработки ОГА вызов с закрытым ключом, и тогда он просто передает ответ, полученный от агент SSH к серверу.под Unix, такой сценарий работает без проблем, потому что ядра UNIX проверяет разрешения, когда программа пытается получить доступ к того гнезда. Для сокетов равен af_inet, однако, соединения анонимны (читать "и неуверенно, что"). Представьте, что у вас есть в Cygwin SSH-агента работает. Злоумышленник может приложение Ваш ящик, найдите открытый порт, используемый SSH-агента, открыть подключение к серверу SSH, получите ОГА вызов от него, отправить его на ваш SSH-агента через открытый порт он/она нашли, получите ОГА ответ, отправить его на сервер SSH и вуаля, он успешно вошел на сервер, как вы.
Источник: Настроить Git
Следующая команда позволит сохранить пароль в памяти в течение некоторого времени (для мерзавец 1.7.10 или новее).
$ git config --global credential.helper cache
# Set git to use the credential memory cache
$ git config --global credential.helper 'cache --timeout=3600'
# Set the cache to timeout after one hour (setting is in seconds)
Когда вы используете https протоколу для Git тянуть & толкать, просто настроить пульт.происхождения.URL-адрес для вашего проекта, чтобы избежать ввода имени пользователя (и пароль) каждый раз, когда вы нажимаете.
Как настроить пульт.происхождения.адресу: в <предварительно> Формат URL: протокол HTTPS://{имя пользователя:пароль@}github.com/{владелец}/{РЕПО}
Параметры в URL:
е.г ГИТ конфиг удаленного.происхождения.https://[email protected]/eric/myproject URL-адрес
</пред>
СШ
Я думаю, что с помощью СШ
протокол-это лучшее решение, чем с HTTPS
, даже если шаг установки немного усложняется.
Грубые шаги:
SSH-ключей
на Linux, на msysgit для Windows `` предоставляющих аналогичные команды.~/.СШ
. И добавить его в агент SSH через СШ-добавить
командная.СШ
стиль, например, [email protected]:myaccount/myrepo.git
Советы:
протокол HTTPS
и СШ
протокол.Просто меняется удаленных.происхождения.URL-адрес будет достаточно, или вы можете редактировать repo_home/.в git/config файл напрямую изменить значение (например.G помощью ви
на Linux).
Обычно я добавить строку для каждого протокола, и закомментируйте один из них с помощью #
.
Е. Г.
в <предварительно> [пульт и"происхождения" и] URL-адрес = [email protected]:myaccount/myrepo.git
fetch = +refs/heads/*:refs/remotes/origin/*
</пред>
Можно кэшировать на GitHub пароль в Git:
Просто следуйте инструкциям из GitHub'ы официальные документы.
После следуя инструкциям по ссылке выше, вы должны быть в состоянии толкать/тянуть/из репозитория, не вводите свой логин/пароль каждый раз.
Здесь'с другим вариантом:
Вместо того, чтобы писать
git push origin HEAD
Вы могли бы написать:
git push https://user:[email protected]/path HEAD
Очевидно, большинство снарядов в результате пароль кэширования в истории, так что имейте это в виду.
Что работал для меня было изменить.в git/config и использовать
[remote "origin"]
url = https://<login>:<password>@gitlab.com(...).git
Само собой разумеется, что это небезопасный способ хранения пароля, но есть сред/случаях, когда это не может быть проблемой.
В принципе, у вас есть два варианта.
Если вы используете одного и того же пользователя на обеих машинах, вам нужно скопировать ключ .pub на свой компьютер, чтобы GitHub знал, что вы один и тот же пользователь.
Если вы создали новый файл .pub для своего ПК и хотите рассматривать машины как разных пользователей, вам нужно зарегистрировать новый файл .pub на сайте GitHub.
Если это все еще не работает, возможно, причина в том, что ssh настроен неправильно, и ssh не может найти местоположение ваших ключей. Попробуйте
ssh -vv [email protected]
Чтобы получить больше информации о том, почему SSH не работает.
Обновление для HTTPS:
На GitHub запустил новую программу для Windows, которая хранит ваши учетные данные, когда вы'повторно через HTTPS:
Использовать:
Скачать программу с ЗДЕСЬ
Как только вы запустите программу, она будет редактировать .файл gitconfig хранит настройки
. Проверьте, если это исправили .gitconfig хранит настройки в случае, если у вас их несколько. Если это не'т изменение правильным, добавьте следующие строки в ваш
.gitconfig хранит настройки`
[учетных] помощник = !'C:\Path\To\Your\Downloaded\File\git-credential-winstore.exe'
Обратите внимание на разрыв строки после [учетных]
. Он требуется.
Если ключ SSH или .файл netrc по
не работает для вас, то еще один простой, но менее надежное решение, которые могли бы работать на вас ГИТ-учетных-магазин - помощник для хранения учетных данных на диск:
git config --global credential.helper store
По умолчанию учетные данные будут сохранены в файле `~/.ГИТ-полномочий. Он будет создан и записан.
Обратите внимание, используя этот помощник будет хранить ваши пароли в незашифрованном виде на диске, защищены только разрешения файловой системы. Если это не может быть приемлемым компромиссом безопасности.
Для пользователей Git для Windows, после команды `git файл config --глобальные учетные данные.помощник магазин, если он все равно запрашивает пароль, вы'd лучше проверить где файл конфигурации записывается, используя эту команду
git config --list --show-origin
В моем случае, после настройки вручную редактировать файл 'C:\Program файлы\ГИТ mingw64\и т. д.\gitconfig хранит настройки', и добавляете следующий текст, это сработало.
[credential]
helper = store
У меня был тот же вопрос.
Так что я изменил `.файл git/config файл из моего проекта,
url = https://github.com/<your-user-here>/<your-repo-here>
для
url = [email protected]:<your-user-here>/<your-repo-here>
и добавил публичный ключ SSH для профиля ГИТ, которая в обстановке.
На открытый ключ SSH:
cat ~/.ssh/id_rsa.pub
Вам нужно выполнить два шага -
git удаленного удаления происхождения
в Git дистанционного добавить [email protected]:NuggetAI/nugget.git происхождения
Обратите внимание на URL-адрес по SSH Git-это URL-адрес, а не URL-адрес https... которые вы можете выбрать здесь:
Обновление конфигурации файл git напрямую (если вы не хотите запоминать необычные команды):
Открыть свой .файл git/config файл в вашем любимом текстовом редакторе. Он будет в папку, которую вы клонировали или в репозитории, выполненные инициализации ГИТ в. Заходим в этот репозиторий.
.ГИТ-это скрытая папка, и нажав <и>сочетание клавиш Ctrl</роз> + <и>ч</роз> должна показывать скрытые папки (командыls -a
в терминале).
Ниже приведен пример .файл git/config файл
. Скопировать и вставить эти строки, и обязательно обновить эти строки с вашими данными ЖКТ.
[user]
name = Tux
email = [email protected]
username = happy_feet
[remote "origin"]
url = https://github.com/happy_feet/my_code.git
fetch = +refs/heads/*:refs/remotes/origin/*
Изменить часть URL в следующем формате для СШ:
url = [email protected]:happy_feet/my_code.git
(Указанные выше форматы не меняются с различных удаленных серверах ЖКТ, как GitHub или Bitbucket. Это'е: если вы используете Git для контроля версий):
Примечание: для SSH-подключения к удаленным git-репозиторием потребует от вас, чтобы добавить свой публичный ключ SSH к удаленному git-сервер (как GitHub или Bitbucket. Поиск на странице настроек для ключей SSH).
Чтобы знать, как генерировать ваши ключи SSH, см: Создать ключи SSH
Это то, что работал для меня:
git remote set-url origin https://[email protected]/username/reponame.git
Пример:
git remote set-url origin https://[email protected]/jsmith/master.git
Если вы используете Git (например, git Баш) под Windows (и если вы Don'т хотим, чтобы переключиться с HTTPS и SSH), вы также можете использовать диспетчер учетных данных в Git для Windows
Это приложение будет сохранить имя пользователя и пароль для вас...