14 Kasım 2015 Cumartesi

Github Permission Denied (publickey) hatası

  Bir karar aldım ve karşılaştığım sorunların bulduğum çözümlerini yeniden internette aramak yerine blogumda yazarak hem başkalarına hemde kendime faydam dokunur umuduyla kayıt altına almaya karar verdim. 

 Linux mint cinnamon 17.2 sürümünde git cola adlı program ile github adresime bağlanıp depoda (repository) bulunan verileri klonlayarak bilgisayarıma indirdim. Üzerinde değişiklikler yaptıktan sonra depoyu güncellemek için push komutunu kullandım. Tüm sorunlar bundan sonra başladı.

   Verilen hata mesajı "git clone returned exit code 128" diye birşeydi.İnternette biraz araştırma yaptım. Sorun bilgisayarımın github adresime bağlantılı olmadığını öğrendim. Daha önce win8.1 de iken bu hata ile karşılaşmamıştım.

   Sorunun çözümünü öğrenince nedenini anladım win8.1 de github'ın kendi programını indirdiğimizden program otomatik olarak aradaki bağlantıyı kuruyordu. Linux da ise bu işlemleri bizim yapmamız gerekiyor.

  Sorunun kaynağı internette veri alıp-gönderirken şifrelemek gerekir.Bunun için ssh adında bir yöntem kullanılır. Git cola hesap bilgilerini vermemize rağmen bu bağlantıyı otomatik gerçekleştiremez. Bu bağalantıyı Linux terminal ekranından bizim yapmamız gerekiyor.

Çözümü github yardım bölümünde buldum.

Burada ingilizce olduğu için ben kendimce çevirip yazmaya çalıştım.
Bu işi adım adım gerçekleştirelim.

1.Adım: Ssh var mı kontrol edelim.
Terminalde şu komutları girniz.


$ ls -al ~/.ssh
 //Varsa #, .ssh dizinindeki dosyaları listeler

Eğer ssh anahtarımız var ise adı şunlardan biridir.
  • id_dsa.pub
  • id_ecdsa.pub
  • id_ed25519.pub
  • id_rsa.pub
Eğer ssh anahtarımız varsa direk adım 3'e geçebilrisiniz yoksa Adım 2 ile devam edip ssh anahtarı oluşturunuz.

2.Adım: Ssh anahtarı oluşturma

$ ssh-keygen -t rsa -b 4096 -C "email@example.com"
 # Etiket olarak verilen e-posta kullanarak, yeni bir ssh anahtarı oluşturur

Varsayılan ayarları tutmak için bir kez entere basın.İsterseniz dizin adı girebilirsiniz. Önerilen direk devam etmektir. yani varsayılan olarak (/Users/you/.ssh/id_rsa): buraya anahtar oluşturulur.

 Sonrasında parola girmemizi isteyecektir.Parola girin.

Bir parola girdikten sonra, sizin SSH anahtar, parmak izi, veya id verilecektir. Bu gibi görünecektir:

 # Sizin kimlik kaydedilen / Users / sen /.ssh/id_rsa.
 # Sizin genel anahtar kaydedilen / Users / sen /.ssh/id_rsa.pub.
 # Anahtar parmak izi:
 # 01: 0f: f4: 3b: ca: 85: d6: 17: a1: 7d: f0: 68: 9d: f0: a2: db email@example.com

Anahtarımızı oluşturduk şimdi bunu ssh-agent'e eklememiz gerekiyor.

3.Adım: Ssh-agent anahtar ekleme

 # Arka planda ssh-agent başlatmak
 $ Eval "$ (ssh-agent -s)"
 # Ajan 59566 pid
 
$ ssh-add ~ / .ssh / id_rsa
# burada anahtarı ekliyoruz dikkat edilmesi gereken bir yer var
#  "id_rsa adı" yukarıda ki adlardan birisi olabilirdi.

4.Adım: Hesabımıza ssh-anahtarını eklemek

Panoya SSH anahtarını kopyalayın. Anahtar da adlandırılmış olabilir aklınızda tutun id_dsa.pub id_ecdsa.pub veya id_ed25519.pub aşağıdaki dosya adını değiştirmek gerekir, bu durumda:

$ sudo xclip install apt-get
 # İndirme ve xclip yükler.  Eğer `apt-get` yoksa, sen (yum`` gibi) başka bir yükleyici kullanmanız gerekebilir

 $ xclip -Sel klip <~/.ssh/id_rsa.pub
 #Panoya kopyalar # id_rsa.pub dosyasının içeriğini

    • Herhangi bir sayfanın sağ üst köşesinde, profil fotoğrafını tıklatın, ardından Ayarlar'ı tıklatın.

    Kullanıcı çubuğundaki simgesi Ayarlar
    • Kullanıcı ayarlarını kenar çubuğunda, SSH anahtarlarını tıklatın.

     SSH anahtarları

    • SSH anahtarını ekleyin tıklatın.

    SSH Key düğmesi
    • "Anahtar" alanına anahtar yapıştırın.
    • Anahtar Ekle düğmesini tıklatın.
    • GitHub şifrenizi girerek işlemi onaylayın. 
     Muhtemelen sorun çözülmüş olacaktır. Verdiğim sitenin sonunda bir hatadan bahsedilmekte ben karşılaşmadağım  için yapmadım.Zaten ordada başka bir adrese yönlendirmiş çözüm için.

    Böylelikle bir sorun daha çözüme kavuşmuş oldu. Umarım yararlı olmuştur.