Различные результаты при выполнении команды git fetch из процесса IIS и IIS Express?

У меня есть веб-приложение, которое запускает PowerShell для запуска git.

У меня есть локальный IIS, настроенный для работы в качестве моей собственной учетной записи пользователя. Пул приложений настроен на использование моей учетной записи, а в модели процесса для loadUserProfile и setProfileEnvironment установлено значение true.

Проблема в том, что команда git ведет себя по-разному в IIS и IIS Express. В git config --show-origin -l перечислены идентичные настройки из одинаковых мест в обеих средах, поэтому настройки, которые используют оба экземпляра, кажутся одинаковыми. Несмотря на то, что в обоих местах выполняется один и тот же код, команда git fetch выполняется успешно в IIS Express, но завершается ошибкой в ​​IIS с ошибкой:

FATAL ERROR: Disconnected: нет доступных поддерживаемых методов аутентификации (сервер отправил: открытый ключ)

фатальный: Не удалось прочитать из удаленного репозитория.

Пожалуйста, убедитесь, что у вас есть правильные права доступа и репозиторий существует.

Я не могу найти объяснение этому. Это одно и то же веб-приложение, либо опубликованное в моем локальном IIS, либо работающее непосредственно в Visual Studio. Настройки конфигурации Git кажутся идентичными во всех 4 файлах конфигурации, к которым Git обращается в Windows, и тем не менее подключение к удаленному репозиторию завершается сбоем в одной среде, но не в другой. Одна и та же учетная запись пользователя используется для запуска процесса в обоих местах.


person Triynko    schedule 10.01.2019    source источник
comment
В настоящее время проверяются различия в переменных среды. Переменные, связанные с Git, кажутся такими же, но среда Visual Studio работает как 32-разрядная, а среда IIS работает как 64-разрядная. Кажется странным, что какие-либо значимые настройки для git не отображаются в списке конфигурации git. Не удается отобразить некоторые из этих параметров в зависимости от переменных среды.   -  person Triynko    schedule 11.01.2019
comment
Я развернул приложение в режиме x86, и хотя это приводит к почти полному выравниванию переменных среды (несколько переменных среды VS отсутствуют), я все равно получаю ту же ошибку подключения. Все это не имеет никакого смысла. Он отлично работает в IIS Express, но не работает в IIS. Все то же самое, одна и та же команда git, одни и те же переменные среды git, одни и те же настройки конфигурации git из одних и тех же 4-х файлов конфигурации и т. д. Разные результаты.   -  person Triynko    schedule 11.01.2019
comment
Кажется, что Putty вызывается, но не может обнаружить, что Pageant запущен. Я вижу эту разницу при запуске plink из IIS по сравнению с запуском из IIS Express. Там, где процесс, инициированный IIS, обнаруживает, что конкурс запущен, и загружает ключи, процесс, инициированный IIS, просто пытается использовать мое имя пользователя без указания каких-либо ключей. Не знаю, почему это происходит. Не уверен, что это связано, но это не работает: stackoverflow.com/questions/4313834/   -  person Triynko    schedule 11.01.2019
comment
Выглядеть так, как будто это какое-то нелепое намеренное ограничение безопасности, которое, в конечном счете, обречено на провал. stackoverflow.com/a/11776311/88409 Кажется, что службы работают в другом сеансе Windows, поэтому plink не может найти запущенный экземпляр Pageant. Между тем, я не могу запустить Pageant из службы, потому что он не предназначен для сценариев (например, он предназначен только для взаимодействия, с всплывающими окнами и ручным вводом паролей и т. д.). Решение состоит в том, чтобы использовать параметр -i plink для указания ppk, но для этого требуется незашифрованный ppk! Настоящий умный.   -  person Triynko    schedule 11.01.2019
comment
Каждая отдельная рекомендация в основном удаляет пароль: stackoverflow.com/a/7296576/88409   -  person Triynko    schedule 11.01.2019
comment
Это именно тот результат, который я вижу: stackoverflow.com/q/27637723/88409 При запуске из службы он не доходит до строки, в которой говорится, что Pageant проводится. Запрос ключей. Страница не найдена. Так что теперь мне нужно найти способ запустить его.   -  person Triynko    schedule 11.01.2019
comment
Хорошо, я понял, как полностью обойти ограничение и вообще не использовать конкурс. Просто установите локальное значение конфигурации вашего репозитория «ssh.variant» на «plink». Это отключит автоматическое обнаружение git варианта ssh и заставит plink (т. е. использовать набор параметров, подходящих для plink). Затем установите локальную переменную git «core.sshCommand», как показано ниже, в powershell git config --local core.sshCommand "'C:\Program Files\PuTTY\plink.exe' -i ~/.ssh/stash-nopass.ppk". Обратите внимание, что путь к плинку заключен в одинарные кавычки. Это позволит выполнять выборку/вытягивание без проведения конкурса.   -  person Triynko    schedule 11.01.2019