Blocker spíše pro juniory. Vkládám sem kvůli všem z vás, kterým se tento error objevil a netušíte proč. Je to často po změně uživatele, nebo revoknutí starého ssh klíče a vytvoření nového, přičemž starý tam ještě stále straší a git vnímá ten prvně vytvořený.
Debug command:
ssh -Tv git@gitlab.com
Posledních 5 řádků bude vypadat nějak takto:
Welcome to GitLab, @jménoUživatele!
debug1: channel 0: free: client-session, nchannels 1
Transferred: sent 2684, received 1796 bytes, in 0.3 seconds
Bytes per second: sent 9240.8, received 6183.5
debug1: Exit status 0
A je dost možné, že pod @jménoUživatele! může být nějaký váš starý uživatel. Pokud to je váš případ, tak si pohlídejte že v ~/.ssh/id_rsa máte nějaký starý RSA klíč a ten správný, který chcete použít, je např v ~/.ssh/id_rsa2, který máte uložený na gitlabu.
Takže si pomocí
cd && cd .ssh && mkdir old && mv id_rsa old/ && mv id_rsa.pub old/ && mv id_rsa2 id_rsa && id_rsa2.pub id_rsa
Přesunete starý RSA klíč do adresáře ~/.ssh/old/ a ty „později vytvořené“ přesunete tam, kde byl ten pro vás nevhodný. Dostaňte se znovu do původního adresáře a dejte git fetch –all && git pull a už by vám to mělo běhat.
Ještě druhý hotfix pro ty z vás, komu se to ani tak nepodařilo vyřešit, je přistupovat přes https:// do gitlabu, kde si to vyžádá jméno a heslo ručně. Zpravidla to na gitlabu najdete u kouzelného modrého tlačítko v repozitáři vpravo nahoře nad soubory repozitáře, kliknete na clone tlačítko a z něho vám vyjedou 2 varianty, buď pomocí ssh git, nebo https://.
Třetí možnost k řešení je v gitconfigu stanovit, který klíč konkrétně má git pro konkrétní repozitář použít.
Tento článek jsem napsal pro přesně ty z vás, komu se tento problém objevil. Nechť tento krátký návod pracuje za mě pro všechny z vás.