GNU/Linux >> Znalost Linux >  >> Linux

Oprava HTTP Basic:Přístup odepřen a závažná chyba selhání autentizace s GitLab

Onehdy mě napadlo použít svůj dávno zapomenutý účet GitLab k ukládání a sledování všech úprav, které jsem provedl na webu Linux Handbook.

Vytvořil jsem nový repozitář na webovém rozhraní GitLab a pokračoval jsem v nasazování adresáře, který jsem měl ve svém osobním systému.

Všechno bylo v pořádku, dokud jsem nezkusil poslat kód do vzdáleného úložiště na GitHubu. Vyskytla se mi fatální chyba, že „Authentical failed for xyz repository“.

Chyba vypadala takto:

[email protected]:~/Documents/Local-Code$ git push -u origin master
Username for 'https://gitlab.com': gitlab_profile_username
[email protected]': 
remote: HTTP Basic: Access denied
fatal: Authentication failed for 'https://gitlab.com/gitlab_account_username/gitlab_repository/'

Pokud se potýkáte s podobným problémem, dovolte mi, abych vám ukázal, jak tuto chybu opravit.

Zpracování chyby "remote:HTTP Basic:Access denied" Error with GitLab

Hlavní řádek, který poskytuje nějaké vodítko o hlavní příčině této chyby, je tento:

remote: HTTP Basic: Access denied

proč to říkám? Protože vaše úložiště GitLab používá HTTPS. Očekává, že bude mít zabezpečené spojení mezi vaším systémem a vaším úložištěm.

Nemělo by to být automaticky pomocí HTTPS? Ne! Už ne.

GitLab změnil své zásady a nyní očekává, že budete používat svůj vlastní klíč SSH k autentizaci ve svém repozitáři GitLab.

Jinými slovy, abyste mohli odeslat kód z místního systému do vzdáleného úložiště GitLab, musíte vytvořit pár klíčů SSH a přidat veřejný klíč do svého profilu GitLab .

Používám Linux, takže kroky je nejlepší dodržovat na Linuxu. Pokud používáte Windows nebo macOS, měli byste si poradit a zkontrolovat, jak totéž udělat ve vašem operačním systému.

Nejprve zkontrolujte, zda již máte klíče SSH:

ls ~/.ssh/id_rsa.pub

Pokud ji nemáte, vytvořte ji pomocí další sekce, jinak přejděte na sekci za touto.

Vytváření klíčů SSH (pokud jej ještě nemáte)

Používám Ubuntu, takže kroky jsou pro Ubuntu. Pokud používáte nějaké jiné distribuce, kroky se mohou, ale nemusí lišit.

Otevřete terminál a použijte následující příkaz:

ssh-keygen

Měli byste vidět výstup jako tento:

Generating public/private rsa key pair.
Enter file in which to save the key (/user_home/.ssh/id_rsa):

Stiskněte klávesu Enter a přejděte na výchozí volbu. Můžete být požádáni o zadání hesla pro zabezpečení vašeho klíče SSH. Pokud nastavíte heslo, budete ho muset zadat pokaždé, když se pokusíte vytvořit připojení SSH pomocí vygenerovaného klíče SSH. Můžete nebo nemusíte nastavit heslo pro klíč SSH.

Přidání veřejného klíče SSH do GitLab

Pokud jste si vytvořili klíč SSH na svém osobním počítači, měli byste jej najít ve většině distribucí Linuxu v adresáři .ssh ve vašem domovském adresáři. Zobrazte jeho obsah pomocí tohoto příkazu:

cat ~/.ssh/id_rsa.pub

Zkopírujte obsah svého veřejného klíče. Nyní se přihlaste ke svému účtu GitLab, přejděte do Uživatelského nastavení a v levém postranním panelu vyhledejte klíče SSH. Případně můžete po přihlášení přejít na tuto stránku.

Zobrazí se pole pro přidání veřejného klíče. Stačí sem vložit klíč. Zadejte název, abyste snadno poznali, kterému počítači tento klíč patří. Pokud jste něco neudělali sami, klíče SSH nemají ve výchozím nastavení datum vypršení platnosti. Ponechte tedy pole vypršení platnosti nedotčené.

Hotovo se vším? Stiskněte tlačítko Přidat klíč.

Můžete přidat více než jeden klíč SSH. To je normální, pokud máte více než jeden počítač.

Zkontrolujte, zda nyní můžete poslat kód do GitLabu

Takže jste přidali svůj klíč SSH do svého profilu GitLab. Už by to mělo být dobré. Je čas to ověřit.

Zkuste vložit kód znovu. Podívejte se, jestli to funguje. Normálně byste měli vidět výstup jako tento, pokud je úspěšný:

[email protected]:~/Documents/Local-Code$ git push -u origin master
Username for 'https://gitlab.com': gitlab_account_username
Password for 'https://[email protected]': 
Enumerating objects: 127, done.
Counting objects: 100% (127/127), done.
Delta compression using up to 4 threads
Compressing objects: 100% (122/122), done.
Writing objects: 100% (127/127), 401.30 KiB | 6.37 MiB/s, done.
Total 127 (delta 14), reused 0 (delta 0)
remote: Resolving deltas: 100% (14/14), done.
To https://gitlab.com/gitlab_account_username/gitlab_repository.git
 * [new branch]      master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.

Stále se zobrazuje chyba? Pamatujte na rozdíl mezi uživatelským jménem profilu GitLab a uživatelským jménem účtu!

Naučil jsem se to tvrdě.

GitLab má dvě uživatelská jména:uživatelské jméno profilu a uživatelské jméno účtu.

Uživatelské jméno profilu můžete snadno změnit bez jakýchkoli následků. Ale změna uživatelského jména účtu může být katastrofální.

Uživatelské jméno účtu je to, co uvidíte na adrese URL svého úložiště GitLab:

https://gitlab.com/gitlab_account_username/repository_name

Při vytváření nového úložiště GitLab ze svých webových stránek GitLab navrhl použití uživatelského jména profilu v nastavení konfigurace Git na osobním počítači.

Udělal jsem to a pokusil jsem se použít stejné uživatelské jméno profilu při vkládání kódu do úložiště. Není překvapením, že byl zamítnut i po přidání klíče SSH:

[email protected]:~/Documents/Local-Code$ git push -u origin master
Username for 'https://gitlab.com': gitlab_profile_username
Password for 'https://[email protected]': 
remote: HTTP Basic: Access denied
fatal: Authentication failed for 'https://gitlab.com/gitlab_account_username/gitlab_repository.git/'

Trik je tedy v tom, že zde použijete uživatelské jméno účtu GitLab. Když jsem to udělal, odeslání do vzdáleného úložiště GitLab bylo úspěšné.

Fungovalo to pro vás?

No, podělil jsem se o své utrpení s vkládáním kódu do úložiště GitLab. Doufám, že vám to také pomohlo s chybou „fatal:Authentication failed“.

Osvědčilo se vám to? Dejte mi vědět pomocí ano nebo ne v sekci komentářů.


Linux
  1. Jak vygenerovat pár klíčů SSH (s příklady)

  2. Jak nakonfigurovat ověřování na základě klíče SSH v systému Linux

  3. Jak opravit chybu – ModSecurity:Přístup odepřen s kódem 44 [Apache]

  1. Ssh – Stále dostáváte výzvu k zadání hesla pomocí Ssh s ověřováním pomocí veřejného klíče?

  2. Začínáme s SSH v Linuxu

  3. Povolit přihlášení root ssh pouze s ověřováním pomocí veřejného klíče

  1. SSH – Generování a práce s ssh klíči

  2. Jak se připojit k ssh serveru pomocí plink a cmd a veřejného klíče

  3. Omezte přístup SSH na základě hesla na uživatele, ale povolte ověřování pomocí klíče