Folosesc nginx, iar configurația actuală a serverului meu este următoarea:
Server {
asculta 443 ssl;
asculta [::]:443 ssl;
nume_server git.wozzes.me;
ssl_certificate /etc/letsencrypt/live/wozzes.me/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/wozzes.me/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers activat;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
# fișiere repo statice pentru clonarea prin https
locație ~ ^.*\.git/objects/([0-9a-f]+/[0-9a-f]+|pack/pack-[0-9a-f]+.(pack|idx))$ {
rădăcină /var/lib/git/repositories/;
}
# solicitări care trebuie să ajungă la git-http-backend
locație ~ ^.*\.git/(HEAD|info/refs|obiecte/info/.*|git-(încărcare|primire)-pack)$ {
rădăcină /var/lib/git/repositories/;
fastcgi_pass unix:/var/run/fcgiwrap/fcgiwrap.sock;
fastcgi_param SCRIPT_FILENAME /usr/libexec/git-core/git-http-backend;
fastcgi_param PATH_INFO $uri;
fastcgi_param GIT_PROJECT_ROOT $document_root;
fastcgi_param GIT_HTTP_EXPORT_ALL "";
fastcgi_param REMOTE_USER $utilizator_la distanță;
include fastcgi_params;
}
try_files $uri @cgit;
locație @cgit {
fastcgi_pass unix:/var/run/fcgiwrap/fcgiwrap.sock;
fastcgi_param SCRIPT_FILENAME /usr/share/webapps/cgit/cgit.cgi;
fastcgi_param PATH_INFO $uri;
include fastcgi_params;
}
}
Această configurație îmi permite să clonez depozitele fără a folosi o parolă, dar permite și utilizatorilor să împingă liber către arhivele mele, ceea ce nu este ceea ce vreau. Dacă adaug o secțiune de autentificare la git-http-backend
parte, începe, de asemenea, să necesite o parolă pentru clonarea obișnuită.
Cum permit clonarea neautentificată, dar am nevoie de o parolă pentru împingere?