Git push: имя пользователя, пароль, как избежать?

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

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

Ответ 1

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 в поле с надписью "Key".

  • Если ваш репозиторий управляется кем-то другим, дайте администратору ваш id_rsa.pub.

  • Если ваш удаленный репозиторий администрируется вашим, вы можете использовать эту команду, например:

    scp ~/.ssh/id_rsa.pub [email protected]_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] В этом разделе содержится ответ от Eric P

Ответ 2

Постоянная аутентификация с репозиториями 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>

Использование также должно указывать кеширование expire,

git config --global credential.helper 'cache --timeout 7200'

После включения кэширования учетных данных он будет кэшироваться для 7200 секунд (2 часа).

Ответ 3

Если у вас уже установлены ваши 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

Ответ 4

Просто используйте параметр --repo для команды git push. Вот так:

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

Ответ 5

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

[email protected]:org/repo.git  

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

Ответ 6

Сохранение неопределенно

Вы можете использовать git-credential-store через

git config credential.helper store

который хранит ваш пароль на диске.

С таймаутом

Используйте git-credential-cache, который по умолчанию хранит пароль в течение 15 минут.

git config credential.helper cache

чтобы установить другой тайм-аут, используйте --timeout (здесь 5 минут)

git config credential.helper 'cache --timeout=300'

Ответ 8

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

Ответ 9

Все это возникает из-за того, что git не предоставляет опции в командах clone/pull/push/fetch для отправки учетных данных через канал. Хотя он дает credential.helper, он хранится в файловой системе или создает демона и т.д. Часто учетные данные git являются системными уровнями, и onus, чтобы сохранить их в безопасности, находится в приложении, вызывающем команды 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}

Затем очистите репозиторий пароля, как в следующем разделе.

PURGING

Теперь это исчезло бы и

  • записал пароль в git удаленном источнике. Введите "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.git → http: \\/\\/kris: [email protected] \\/proj. мерзавец

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

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. После этого вам не будет предложено ввести пароль.
  • Сделайте очистку, как в предыдущем разделе. Не пропустите это.

Ответ 10

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

Ответ 11

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

Ответ 12

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

Ответ 13

Шаг 1 -

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

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

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

Шаг 2 -

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

Шаг 3 -

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

ssh-add ~/.ssh/id_rsa 

Шаг 4 -

Теперь добавьте удаленный url git @github.com: имя_пользователя/repo_name.git в локальное репо git, используя команду ниже.

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

Вот оно.

Ответ 14

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

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