Как заставить Git запрашивать пароль только при нажатии на удаленный репозиторий

требование, вероятно, нечетное. Но иногда мне действительно нужна эта функциональность. Хорошо, вот в чем дело, я всегда работаю за прокси. Либо в офисе я использую Corp proxy, либо дома я также использую VPN и прокси (вы знаете, я в Китае, поэтому я надеюсь, что вы можете понять).

обычно я использую протокол git для подключения удаленного репозитория github, но мне трудно установить прокси-сервер за протоколом git, поэтому я решил вернуться к http(S) со следующим команда

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

git config http.proxy http://proxy:8080

и это работает как шарм. Но ГИТ просит имя пользователя и пароль всякий раз, когда я подключаюсь к удаленному серверу, например, pull/push.

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

3 ответов


Сохранять Пароль

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

git config --global credential.helper store

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

Кэш Паролей

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

git config --global credential.helper cache

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

git config --global credential.helper 'cache --timeout=600'

еще раз, это не всегда идеально.

SSH Agent-идеальное решение

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

вы можете настроить его, установив удаленный url следующим образом:

git remote set-url origin git@github.com:<username>/<project>.git

если вы используете другую услугу хостинга, такую как bitbucket, просто замените "github.com" с вашим доменом провайдеров.

как только вы это сделаете, вам нужно будет настроить пара открытых и закрытых ключей для связи между github и вашим компьютером. Существует очень хороший учебник о том, как его настроить здесь. Если вы используете Linux или MacOSX, вам просто нужно выполнить шаги при выполнении команды ssh-keygen.

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

агент SSH, который вы используете, будет зависеть от вашей операционной системы, но его не должно быть сложно настроить. С наиболее популярными дистрибутивами Linux вам не нужно ничего делать, и я был проинформирован в комментарии ниже, что вы можете настроить Windows следующим образом:

git config --global credential.helper wincred

Я никогда не использовал MacOSX, поэтому я не могу сказать наверняка, является ли это автоматически настраивается, как в дистрибутивах на основе Ubuntu.


завершить код ' s комментарий, вы можете изменить url существующего РЕПО:

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

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

Я лично храню все мои различные учетные данные (GitHub, BitBucket,...) в зашифрованном %HOME%\_netrc.gpg (Windows) или ~/.netrc.gpg (Unix) использование _netrc помощник учетных данных (git1.8.3+), а не помощник учетных данных кэша памяти, описанный в Михаил ' s ответ.

на "настройте клиенты Git, такие как GitHub для Windows, чтобы не запрашивать аутентификацию".

разница в том, что:

  • С помощью помощника учетных данных кэша памяти вы должны помнить свой пароль GitHub
  • С помощью помощника учетных данных GPG netrc вам нужно только запомнить пароль gpg, для все ваши различные полномочия.

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

то, что я только что описал, для HTTPS url, который, на мой взгляд, остается проще в управлении, чем ssh url, с их открытые / частные ssh-ключи, которые вам нужно защитить парольной фразой,и что вам нужно опубликовать на вашей учетной записи GitHub (один другой на рабочую станцию, так как вы не должны повторно использовать ssh-ключи)


Это простое решение для сохранения некоторых типов вы можете легко использовать следующие шаги в Git bash..

(1) создать удаленный репозиторий

git remote add origin https://{your_username}:{your_password}@github.com/{your_username}/repo.git

Примечание: Если ваш пароль содержит знак"@", используйте "%40 " вместо этого

(2) затем сделайте все, что хотите, с удаленным репозиторием

ex:- git push origin master