Biliyorum, bunu çok geç cevaplıyorum ve gerçekten cevap vermek istersem StackOverflow bile onayladı. Cevap veriyorum çünkü kimse asıl sorunu tanımlamadı, bu yüzden aynı şeyi paylaşmak istemedi.
Temeller
İlk önce, burada uzaktan kumandanın ne olduğunu anlayın. Uzak GitLab ve sisteminiz yereldir, bu nedenle uzaktan kumanda hakkında konuştuğumuzda origin
, git remote -v
çıktınızda ayarlanmış olan URL uzak URL'nizdir.
Protokoller
Temel olarak, Git clone / push / pull büyük ölçüde iki farklı protokolde çalışır (başka protokoller de vardır) -
- HTTP protokolü
- SSH protokolü
Bir depoyu klonladığınızda (veya uzak URL'yi değiştirdiğinizde) ve https://gitlab.com/wizpanda/backend-app.git gibi HTTPs URL'sini kullandığınızda, ilk protokolü yani HTTP protokolünü kullanır.
Depoyu klonlarsanız (veya uzak URL'yi değiştirirseniz) ve URL'yi o git@gitlab.com:wizpanda/backend-app.git
zamanki gibi kullanırsanız, SSH protokolünü kullanır.
HTTP Protokolü
Bu protokolde, her uzaktan işlem, yani klonlama, itme ve çekme, basit kimlik doğrulamasını, yani uzaktan kumandanızın kullanıcı adı ve şifresini kullanır (bu durumda GitLab), bu, her işlem için, kullanışsız olabilecek kullanıcı adınızı ve şifrenizi yazmanız gerektiği anlamına gelir. .
Dolayısıyla, itme / çekme / klonlama yaptığınızda GitLab / GitHub, kullanıcı adınız ve şifrenizle kimliğinizi doğrular ve işlemi yapmanıza olanak tanır.
Bunu denemek istiyorsanız, komutu çalıştırarak HTTP URL'ye geçebilirsiniz git remote set-url origin <http-git-url>
.
Bu durumu önlemek için SSH protokolünü kullanabilirsiniz.
SSH Protokolü
Basit bir SSH bağlantısı, genel-özel anahtar çiftlerinde çalışır. Yani sizin durumunuzda GitLab, iletişim için SSH URL'si kullandığınız için kimliğinizi doğrulayamaz. Şimdi GitLab sizi bir şekilde tanımalı. Bunun için bir genel-özel anahtar çifti oluşturmanız ve genel anahtarı GitLab'a vermeniz gerekir.
Artık GitLab ile itme / çekme / klonladığınızda, GIT (dahili olarak SSH) özel anahtarınızı GitLab'a sunacak ve kimliğinizi onaylayacak ve ardından GitLab işlemi gerçekleştirmenize izin verecektir.
O yüzden Muhammed tarafından zaten verilen adımları tekrar etmeyeceğim, teorik olarak tekrarlayacağım.
- "Ssh-keygen -t rsa -b 2048 -C" Ortak SSH Anahtarım "anahtar çifti oluşturun
- Oluşturulan anahtar çifti varsayılan olarak olacaktır
~/.ssh
adında id_rsa.pub
(genel anahtar) & id_rsa
(özel anahtar).
- Genel anahtarı GitLab hesabınızda depolayacaksınız (aynı anahtar birden çok veya herhangi bir sunucuda / hesapta kullanılabilir).
- Klonladığınızda / ittiğinizde / çektiğinizde, GIT özel anahtarınızı sunar.
- GitLab, özel anahtarı genel anahtarınızla eşleştirir ve gerçekleştirmenize izin verir.
İpuçları
Her zaman en az 2048 baytlık güçlü bir rsa anahtarı oluşturmalısınız. Yani komut olabilir ssh-keygen -t rsa -b 2048
.
https://gitlab.com/help/ssh/README#generating-a-new-ssh-key-pair
Genel düşünce
Her iki yaklaşımın da artıları ve eksileri var. Yukarıdaki metni yazdıktan sonra, bununla ilgili daha fazla araştırma yapmaya gittim çünkü bununla ilgili hiçbir şey okumadım.
Bu resmi belgeyi buldum https://git-scm.com/book/en/v2/Git-on-the-Server-The-Protocols, bu konuda daha fazlasını anlatıyor. Buradaki amacım, hatayı okuyarak ve hatayı düşünerek, kendi teorinizi veya anlayışınızı oluşturabilir ve ardından sorunu çözmek için bazı Google sonuçlarıyla eşleştirebilirsiniz :)
ssh -vvvv git@gitlab.com
SSH anahtarını alıp almadığını görmek için koş