клон мерзавца - перестал работать вместо того, чтобы запросить учетные данные

Самый легкий путь состоит в том, чтобы использовать другие 4 эластичных дюйм/с и применить их к i-N экземплярам, в этом случае они просто будут дополнительными записями DNS для тех другой дюйм/с в Вашем общедоступном DNS---не отличающийся от www.example.com.

Немного менее ужасная версия (но намного более включенный) метод должен был бы выполнить обратный прокси, который смотрит на входящие запросы и вперед их к внутренним адресам экземпляров i-N.example.com на основе чего-то идентифицируемого на прикладном уровне (например, HTTP vhost)

Более ужасная версия включила бы обеспечение размещенного + динамическая служба DNS для example.com и запись сценария запуска, который обновит DNS для i-N экземпляров соответственно.

13
задан 2 December 2013 в 17:52
7 ответов

В git версии 2.3 есть переменная среды GIT_TERMINAL_PROMPT , которая при установке на 0 отключает запрос учетных данных.

Вы можете получить дополнительную информацию об этом в man git (после обновления до версии git 2.3 ) или в этом сообщении в блоге на github .

Примеры:

  • git clone https : //github.com/some/non-existing-repo запросит имя пользователя и пароль
  • GIT_TERMINAL_PROMPT = 0 git clone https://github.com/some/non-existing-repo будет сбой без запроса имени пользователя и пароля
14
ответ дан 2 December 2019 в 21:26

В зависимости от того, как вы запускаете git, перенаправление stdin или stdout, чтобы они не были подключены к терминалам, остановит git от запроса подробностей и просто вызовет ошибку.

Это приведет к также позволяют обнаруживать ошибки (или, по крайней мере, журналы) веб-службы.

-1
ответ дан 2 December 2019 в 21:26

Если вы используете аутентификацию ssh и в Linux, вы можете создать замену команды ssh, чтобы отключить это.

Создайте файл с именем «sshnoprompt.sh» с помощью:

ssh -oBatchMode = yes $ @

Сделать этот файл исполняемым с помощью chmod + x sshnoprompt.sh

Затем при запуске git:

GIT_SSH = "sshnoprompt.sh" git clone foo @ dummyserver : not_a_repo

И он не разрешает никаких интерактивных подсказок или вопросов git - он не должен иметь возможности спрашивать пользователя ни о чем.

0
ответ дан 2 December 2019 в 21:26

Работа с git версии 1.8.3.1;

git clone -c core.askPass $ echo url / или / path / to / git / repo

Конфигурация core .askPass работает, передавая управление обработкой учетных данных вышеупомянутой программе. Однако, поскольку $ echo не может делать ничего, кроме вывода, попытка клонирования сразу же терпит неудачу и применяется соответствующее перенаправление bash. Этот код вызывается только в том случае, если репозиторий git оказывается частным, и выводит сообщение об ошибке, указывающее, что аутентификация не удалась для конкретного репозитория. Вы можете проверить это на https://github.com/git/git публичном репозитории против частного репозитория, о котором вы знаете.

Чтобы сделать сделку приятнее, вам даже не нужно будет ссылаться на такую ​​программу, как echo . Простая передача конфигурации git -c core.askPass без последующего ввода все равно приведет к сбою в случае, если репозиторий окажется частным, поскольку код не будет знать, на какую программу разгрузить обработку учетных данных. Хотя это, безусловно, более старый и простой метод, чем другие, упомянутые здесь, я не знаю, будет ли он иметь такой же эффект в более старых версиях git.

0
ответ дан 2 December 2019 в 21:26

Когда у вас есть контроль только над конфигурацией git:

git config --global credential.helper '!f() { echo quit=1; }; f'

Дает

$ git clone https://github.com/edx/drf-extensions.git/
Cloning into 'drf-extensions'...
fatal: credential helper '!f() { echo quit=1; }; f' told us to quit

идея исходит от первоначального коммиттера GIT_TERMINAL_PROMPT после перехода по ссылке @user243345.

0
ответ дан 6 July 2020 в 00:33
GIT_TERMINAL_PROMPT=0 git clone https://github.com/some/non-existing-repo

Работайте у меня на Mac.

0
ответ дан 25 December 2020 в 16:14

Как пропустить, игнорировать и/или отклонить запросы учетных данных git

Приведенные выше ответы работали только частично для меня при использовании Git-for-Windows: два разных приложения соперничали за мое внимание с автоматизированными скриптами git pull/push:

  • git-credentials-manager (разработан командой GfW AFAICT; чистый, серый вид интерфейса Windows)
  • еще один диалог, в чьем происхождении определенно есть (дерьмово выглядящие) гены X-Windows.

Чтобы закрыть их все, без удаления диспетчера учетных данных, как указано в некоторых ответах здесь: https://stackoverflow.com/questions/37182847/how-do-i-disable-git-credential-manager-for-windows, вот что теперь работает, сидя поверх автоматизированных (bash) сценариев оболочки:

# https://serverfault.com/questions/544156/git-clone-fail-instead-of-prompting-for-credentials
export GIT_TERMINAL_PROMPT=0
# next env var doesn't help...
export GIT_SSH_COMMAND='ssh -oBatchMode=yes'
# these should shut up git asking, but only partly: the X-windows-like dialog doesn't pop up no more, but ...
export GIT_ASKPASS=echo
export SSH_ASKPASS=echo
# We needed to find *THIS* to shut up the bloody git-for-windows credential manager: 
# https://stackoverflow.com/questions/37182847/how-do-i-disable-git-credential-manager-for-windows#answer-45513654
export GCM_INTERACTIVE=never

Что НЕ сработало

  • Все заклинания git config credential.modalprompt false -- упомянуты как решение в ответах на этот связанный вопрос SO. у меня нет игральных костей.
  • возился с этой GIT_SSH_COMMAND переменной среды: ничего не сработало, кроме сохранения, поскольку я подозреваю, что это сработает при запуске этого материала на компьютере с Linux вместо Windows.
  • GIT_TERMINAL_PROMPT=0: тоже не работает. Сохранил по той же причине, но без костей в Windows.

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

Что ДЕЙСТВИТЕЛЬНО работало

  • возиться с этими двумя *_ASKPASS env.vars., как ни странно, заткнуть приглашение входа в систему «X-Windows look» (автоматически) git push. Ура!
  • GCM_INTERACTIVE=never был волшебным ингредиентом, который окончательно заткнул это диалоговое окно диспетчера учетных данных git for-windows. Благодаря этому конкретному ответу (https://stackoverflow.com/questions/37182847/how-do-i-disable-git-credential-manager-for-windows#answer-45513654), который не находится в верхней части списка, но определенно является самым важным. для моего случая.

Моя версия git

$ git --version
git version 2.30.1.windows.1

Прощальное примечание

Много лет искал эту информацию время от времени: на этот раз, видимо, мне повезло, и, возможно, я продержался дольше(?), продираясь через миллионы страниц болтают о настройке ваших учетных данных: Google явно не умен. По крайней мере, он не очень хорошо слушает вопросы меньшинства, это точно.

Заголовок добавлен в надежде, что индексация Google поместит эту страницу выше для следующей, ищущей ответы на эти вопросы или их варианты...

1
ответ дан 19 February 2021 в 10:46

Теги

Похожие вопросы