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'
Ответ 7
Подключите свой клиент git к хранилищу учетных записей ОС. Например, в Windows вы связываете помощника учетных данных с wincred:
git config --global credential.helper wincred
Есть ли способ пропустить ввод пароля при использовании https://в GitHub?
Ответ 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]