http-аутентификация не работает с TortoiseGit - PullRequest
0 голосов
/ 29 апреля 2018

Каждый раз, когда я пытаюсь клонировать любой репозиторий с помощью TortoiseGit из нашего репозитория удаленного gogs, я получаю 401 (Не авторизовано).

Использование http://user:pw@ex.ample.com/user/repo.git в качестве URL-адреса оформления заказа также не работает.
SSH не вариант. Все работает с отключенной аутентификацией http.

упрощенная конфигурация nginx:

server {
        listen 80;
        listen [::]:80;
        server_name ex.ample.com;
                location / {
                        auth_basic "Restricted Content";
                        auth_basic_user_file /var/www/gogs/.htpasswd;
                        proxy_pass http://localhost:3000/;
                }
}

Так что мой вопрос будет таким: как мне настроить TortoiseGit на отправку действительного http auth?

Редактировать: похоже, влияет только на частные репозитории, публичные репозитории доступны.
Edit2: отправка в публичные репозитории невозможна за http auth aswell.

Решение: https с обратным прокси-сервером ведет себя странно, поэтому URL репо и push-URL должны использоваться с простым http. Вероятно, здесь нужно немного подправить нгинкс.

1 Ответ

0 голосов
/ 03 мая 2018

Git - это «тупой трекер контента». Он просто отслеживает контент и не предоставляет и не требует какой-либо аутентификации или авторизации.

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

Если вы используете gogs, вам нужно настроить аутентификацию там или передать имя пользователя через прокси-сервер nginx (см. https://github.com/gogits/gogs/issues/165, https://github.com/gogits/gogs/issues/2170, https://github.com/gogits/gogs/pull/3785, ...).

Другие обращения к серверу Git с использованием http см. Как обслуживать GIT через HTTP через NGINX с именем пользователя / паролем? или http://gitolite.com/gitolite/http/.


Старый ответ:

При базовой аутентификации может быть только одна аутентификация, а не две или даже больше.

Единственным исключением является проверка подлинности прокси-сервера (код состояния http 407, который выполняется с использованием другого заголовка).

Вы можете попытаться переслать свои базовые учетные данные для аутентификации на другой сервер, проксифицировав учетные данные https://serverfault.com/q/511206/237109 или попытаться предоставить статические учетные данные в конфигурации nginx.

...