Я получаю сообщение об ошибке при попытке клонировать репо из gerrit с моим пользователем jenkins.
У меня есть пользователь jenkins в gerrit с установленным ключом ssh и паролем http. Я могу войти с паролем в пользовательский интерфейс gerrit, но когда я пытаюсь клонировать репо через http, я получаю фатальный результат: не удалось выполнить аутентификацию.
Я использую nginx, и вот моя конфигурация для обоих сайтов
Вот конфигурация nginx для gerrit
upstream gerrit {
server localhost:8092 fail_timeout=0;
}
server {
listen 80;
server_name gerrit.domain.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name gerrit.domain.com www.gerrit.domain.com;
proxy_ssl_session_reuse off;
ssl_certificate
/etc/letsencrypt/live/gerrit.domain.com/fullchain.pem; # managed by Certbot
ssl_certificate_key
/etc/letsencrypt/live/gerrit.domain.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
if ($scheme != "https") {
return 301 https://$host$request_uri;
} # managed by Certbot
location / {
allow 10.8.0.0/24;
deny all;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Connection "";
proxy_set_header Authorization $http_authorization;
proxy_pass_header Authorization;
proxy_redirect http:// https://;
proxy_pass http://gerrit;
proxy_http_version 1.1;
proxy_request_buffering off;
proxy_buffering off; # Required for HTTP-based CLI to work over SSL
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
}
и конфигурация nginx для jenkins
upstream jenkins {
server localhost:8080 fail_timeout=0;
}
server {
listen 80;
server_name jenkins.domain.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name jenkins.domain.com www.jenkins.domain.com;
ssl_certificate /etc/letsencrypt/live/jenkins.domain.com-0001/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/jenkins.domain.com-0001/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
proxy_ssl_session_reuse off;
if ($scheme != "https") {
return 301 https://$host$request_uri;
} # managed by Certbot
location / {
allow 10.8.0.0/24;
deny all;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Connection "";
proxy_redirect http:// https://;
proxy_pass http://jenkins;
proxy_http_version 1.1;
proxy_request_buffering off;
proxy_buffering off; # Required for HTTP-based CLI to work over SSL
add_header 'X-SSH-Endpoint' 'jenkins.domain.com:50022' always;
proxy_read_timeout 150;
}
location = /favicon.ico {
log_not_found off;
}
}
Я пробовал использовать пароль, который хранится в /etc/nginx/.htpasswd, и тот, который я создал в пользовательском интерфейсе gerrit для пользователя jenkins, но оба они не работают.
Кто-нибудь знает, почему не работает?
Кроме того, в журнале ошибок nginx я вижу ошибку «пользователь« jenkins »: несоответствие пароля». Но с тем же паролем я могу войти в пользовательский интерфейс gerrit.
Я обнаружил, что после удаления
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
строки из конфигурации gerrit nginx jenkins может клонировать репо, но после этого я получаю сообщение об ошибке с веб-сайта, что HTTP-аутентификация не была настроена должным образом.