GitHub için SSH Anahtarları Nasıl Oluşturulur

Yayınlanan: 2022-02-05

Git ve GitHub, her geliştirici için temel araçlardır. Hemen hemen her tür yazılım geliştirme projesinde yaygın olarak kullanılırlar.

Gitlab ve Bitbucket gibi başka Git barındırma hizmetleri de vardır, ancak GitHub geliştiriciler için en popüler seçimdir. İşe alım görevlilerine daha çekici görünmek için profilinizi bile düzenleyebilirsiniz.

Projelerinizi düzenlemek, diğer geliştiricilerle işbirliği yapmak ve tabii ki Kinsta'da Git ve GitHub'ı kullanabilirsiniz.

Ancak Git ve GitHub birbiriyle ilişkili ancak farklı araçlar olduğundan, iş akışınızı her biri ile sürekli olarak güncellemeniz gerekir.

Makinelerinizin her biri için SSH anahtarları kullanmanızı öneririz. Bu eğitimde, bunların ne olduğunu, bazı avantajlarını ve GitHub SSH anahtarlarının nasıl oluşturulacağını ve yapılandırılacağını öğreneceksiniz.

Başlayalım!

SSH Anahtarları Nedir?

Basitçe söylemek gerekirse, SSH anahtarları, internet üzerinden uzak bilgisayarlara güvenli erişim sağlamak için SSH (Güvenli Kabuk) protokolü için kullanılan kimlik bilgileridir. Genellikle, bu kimlik doğrulama bir komut satırı ortamında gerçekleşir.

Bu protokol, istemci-sunucu mimarisine dayanmaktadır; bu, kullanıcı (veya "istemci") olarak, uzak bir sunucuda oturum açmak ve komutları yürütmek için SSH istemcisi adı verilen özel bir yazılım kullanmanız gerektiği anlamına gelir. Bu temelde GitHub'a bir terminal aracılığıyla kimlik doğrulaması yaparken yaptığınız şeydir.

İki komutu gösteren terminal: "git commit -am "Yapılandırılmış programlama örnek dosyasına yorum eklendi" ve GitHub sunucusundan gelen başarı yanıtıyla "git push"
Git bas.

Ancak SSH yalnızca GitHub için kullanılmaz. Hizmetlerine erişmek için güvenli bir kanal oluşturmak için Kinsta, Google Cloud ve Amazon Web hizmetleri gibi diğer platformlar tarafından yaygın olarak kullanılır.

Şimdi, SSH anahtarlarının gerçekte nasıl çalıştığına gelirsek, genel ve özel anahtarlar arasındaki farkları anlamanız gerekir.

Genel ve Özel Anahtarlar

Temel bilgilerle başlayalım.

SSH protokolü, asimetrik şifreleme adı verilen bir şifreleme tekniği kullanır. Bu terim kulağa karmaşık ve tuhaf gelebilir, ancak hiçbir şey gerçeklerden daha uzak olamaz.

Temel olarak asimetrik şifreleme, genel ve özel anahtarlar olmak üzere bir çift anahtar kullanan bir sistemdir.

Tahmin edebileceğiniz gibi, ortak anahtar herkesle paylaşılabilir. Temel amacı, verileri şifrelemek, mesajı gizli koda veya şifreli metne dönüştürmektir. Bu anahtar, verileri internet üzerinden göndermeden önce şifrelemek için genellikle diğer sistemlere - örneğin sunuculara - gönderilir.

Öte yandan, özel anahtar, kendinize saklamanız gereken anahtardır. Açık anahtarınızla şifrelenmiş verilerin şifresini çözmek için kullanılır. Onsuz, şifreli bilgilerinizin kodunu çözmek imkansızdır.

Bu yöntem, sizin ve sunucunun bilgileri iletmek için güvenli bir iletişim kanalı tutmasını sağlar.

SSH aracılığıyla bir sunucuya bağlandığınızda arka planda şunlar olur:

  1. İstemci, ortak anahtarı sunucuya gönderir.
  2. Sunucu, istemciden özel anahtarı kullanarak ortak anahtarla şifrelenmiş rastgele bir mesajı imzalamasını ister.
  3. İstemci mesajı imzalar ve sonucu sunucuya iletir.
  4. İstemci ve sunucu arasında güvenli bir bağlantı kurulur.

Özel anahtarlarınızı güvende tutmanız ve hiçbir koşulda kimseyle paylaşmamanız önemlidir. Size gönderilen tüm bilgilerin tam anlamıyla anahtarıdırlar.

GitHub ile SSH Anahtarlarını Kullanma

13 Ağustos 2021'den bu yana Github, komut satırı erişimi için artık parola doğrulamasını kabul etmemektedir. Bu, artık kişisel bir erişim belirteci aracılığıyla kimlik doğrulamanız veya bir SSH anahtarı kullanmanız gerektiği anlamına gelir (biraz daha uygun).

Bir terminalde HTTP üzerinden GitHub parolanızla kimlik doğrulaması yapmaya çalıştığınızda şunlar olur:

 Username for 'https://github.com': yourusername Password for 'https://[email protected]': remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead. remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information. fatal: Authentication failed for 'https://github.com/yourusername/repository.git/'

GitHub, herhangi bir deponuzu SSH aracılığıyla düzenlemenize izin vermek için ortak anahtarınıza ihtiyaç duyar.

SSH anahtarlarını yerel olarak nasıl oluşturabileceğinizi görelim.

Yerel Olarak SSH Anahtarları Nasıl Oluşturulur

Artık SSH protokolü ve genel ve özel anahtarlar arasındaki farklar hakkında biraz bilgi sahibi olduğunuza göre, makineniz ve GitHub depolarınız arasında güvenli SSH kanalını kurmanın zamanı geldi.

Devam etmeden önce, zaten bir GitHub hesabınız ve Git'in sisteminizde kurulu olduğu bir terminal/komut isteminiz olmalıdır. Windows kullanıyorsanız, bu yerleşik öğreticiyle birlikte izlemeniz gereken tüm araçlara sahip Git bash'i yüklediğinizden emin olun.

OpenSSH istemcisi, SSH aracılığıyla bağlanmak için kullanılan en popüler açık kaynaklı yazılımdır. Varsayılan olarak Linux, macOS ve Windows 10'a yüklendiğinden işletim sisteminiz için endişelenmenize gerek kalmayacak.

Yerel SSH anahtarları oluşturmak için Windows'ta bir komut istemi veya Unix tabanlı sistemlerde bir terminal başlatmanız gerekir. Bunu genellikle uygulama panelinizde "terminal", "cmd" veya "powershell" kelimesini arayarak ve ardından görünen simgeye tıklayarak yapabilirsiniz.

"Terminal Emülatörü", "Alacritty" ve "Kitty" dahil olmak üzere farklı terminal uygulamalarını gösteren uygulama bulucu.
Terminal uygulama arama.

Bunu yaptıktan sonra karşınıza aşağıdaki görüntüye benzer bir pencere gelmelidir.

Balık kabuğunu çalıştıran yarı saydam terminal uygulaması.
Terminal uygulaması.

Yerel bir SSH anahtar çifti oluşturmak için aşağıdaki komutu çalıştırın:

 ssh-keygen -t ed25519 -C "[email protected]"

Size bir sır vermenin zamanı geldi: Hiç kimse bu komutu gerçekten hatırlayamaz! Çoğu geliştirici, her seferinde Google'a gitmek zorundadır çünkü:

  1. Unutulabilir, rastgele görünen sayılarla gerçekten uzun bir komut.
  2. Nadiren kullanıyoruz, bu yüzden çoğu zaman hafızaya almaya değmez.

Ancak, terminallerimize sunduğumuz her komutu anlamak önemlidir, bu yüzden bunun her bir bölümünün ne anlama geldiğini görelim.

  • ssh-keygen: Yeni bir çift SSH anahtarı oluşturmak için kullanılan komut satırı aracı. Bayraklarını ssh-keygen help ile görebilirsiniz.
  • -t ed25519: -t bayrağı, anahtar çiftinin dijital imzasını oluşturmak için kullanılan algoritmayı belirtmek için kullanılır. Sisteminiz destekliyorsa, ed25519 , SSH anahtar çiftleri oluşturmak için kullanabileceğiniz en iyi algoritmadır.
  • -C "e-posta": -c bayrağı, genel anahtarın sonunda, genellikle anahtar çiftini oluşturan kişinin e-postası veya kimliği olan özel bir yorum sağlamak için kullanılır.

Komutu terminalinize yazdıktan sonra, anahtarları kaydetmek istediğiniz dosyayı girmeniz gerekecektir. Varsayılan olarak, ana dizininizde, “.ssh” adlı gizli bir klasörde bulunur, ancak onu istediğiniz gibi değiştirebilirsiniz.

Ardından, anahtar çiftinize eklemek için bir parola istenecektir. Bu, herhangi bir zamanda cihazınızın güvenliği ihlal edildiğinde ekstra bir güvenlik katmanı ekler. Parola eklemek zorunlu değildir, ancak her zaman önerilir.

Tüm süreç şöyle görünür:

ssh-keygen komutu, anahtarların kaydedileceği dosya "/home/daniel/.ssh/kinsta_keys", parola girişi ve sonuçta elde edilen anahtar parmak izi dahil olmak üzere çeşitli mesajlarla.
ssh-keygen komutu.

Gördüğünüz gibi, bu komut seçtiğiniz dizinde (genellikle ~/.ssh ) iki dosya oluşturur: .pub uzantılı genel anahtar ve uzantısız özel anahtar.

Genel anahtarı GitHub hesabınıza nasıl ekleyeceğinizi daha sonra göstereceğiz.

ssh-agent'a SSH Anahtarı ekleyin

ssh-agent programı arka planda çalışır, özel anahtarlarınızı ve parolalarınızı güvenle tutar ve ssh tarafından kullanıma hazır halde tutar. Bir sunucuya her bağlanmak istediğinizde sizi parolanızı yazmaktan kurtaran harika bir yardımcı programdır.

Bu nedenle, yeni özel anahtarınızı bu aracıya ekleyeceksiniz. İşte nasıl:

  1. ssh-agent'ın arka planda çalıştığından emin olun.
     eval `ssh-agent` # Agent pid 334065

    Her şey yolundaysa buna benzer bir mesaj alırsanız. Bu, ssh aracısının belirli bir işlem kimliği (PID) altında çalıştığı anlamına gelir.

  2. SSH özel anahtarınızı (uzantısı olmayan) ssh aracısına ekleyin.
     ssh-add ~/.ssh/kinsta_keys

    kinsta_keys'i SSH anahtarınızın adıyla değiştirin. Bu, oluşturduğunuz ilk anahtarsa, “id_algorithm_used” olarak adlandırılmalıdır, örneğin, id_ed25519 .

GitHub Hesabına SSH Anahtarı Ekle

Son adım, genel anahtarınızı GitHub hesabınıza eklemektir. Sadece şu talimatları izleyin:

  1. SSH ortak anahtarınızı panonuza kopyalayın. Dosyayı bulunduğu yerde bir metin düzenleyici ile açıp kopyalayabilir veya içeriğini göstermek için terminali kullanabilirsiniz.
     cat ~/.ssh/kinsta_keys.pub # ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJl3dIeudNqd0DPMRD6OIh65tjkxFNOtwGcWB2gCgPhk [email protected]
  2. GitHub'da oturum açın ] ve sayfanın sağ üst bölümüne gidin, profil fotoğrafınızı tıklayın ve Ayarlar'ı seçin.

    Ayarlar bölümünü gösteren bir okla farklı bölümleri gösteren GitHub sağ üst paneli.
    GitHub ayarları.

  3. Ardından, profil ayarlarınızda SSH ve GPG tuşlarına tıklayın.

    SSH ve GPG anahtarları seçeneğini gösteren profil ayarları paneli.
    SSH ve GPG anahtarları.

  4. Yeni SSH anahtarı düğmesini tıklayın.

    Yeni SSH anahtarı düğmesini gösteren bir ok bulunan SSH anahtarları bölümü.
    Yeni SSH anahtar düğmesi.

  5. GitHub'da yeni SSH anahtarınıza bir Başlık verin - genellikle bu anahtarı kullanacağınız cihaz. Ardından anahtarı Anahtar alanına yapıştırın.

    "Başlık" ve "Anahtar" alanlarıyla yeni bir SSH anahtarı formu ekleyin.
    Yeni bir SSH anahtar formu ekleyin.

  6. SSH anahtarınızı ekleyin.

    SSH anahtar düğmesi ekleyin.
    SSH anahtar düğmesi ekleyin.

Repo Push ile SSH Bağlantısını Test Edin

Şimdiye kadar yaptığınız her şeyi test etme zamanı. Bağlantınızın doğru şekilde kurulduğundan emin olmak için SSH kullanarak mevcut depolarınızdan birini değiştirecek, taahhüt edecek ve aktaracaksınız.

Tüm Kinsta barındırma planları, deneyimli WordPress geliştiricilerimiz ve mühendislerimizden 7/24 destek içerir. Fortune 500 müşterilerimizi destekleyen aynı ekiple sohbet edin. Planlarımıza göz atın!

Örneğimiz için Git for Web Development eğitimimizde oluşturduğumuz basit HTML sitesini değiştireceğiz.

İlk olarak, depoyu yerel makinemize klonlamamız gerekecek. GitHub üzerindeki repo sayfasına gidip verdiği SSH adresini kopyalayabiliriz.

SSH klon komutunu gösteren GitHub sayfası.
SSH klon komutu.

Ardından, bir terminal kullanarak depoyu klonlayın:

 git clone [email protected]:DaniDiazTech/HTML-site.git

Şimdi index.html dosyasına basit bir <h1> etiketi ekleyelim:

 ... <div class="container my-2"> <h1 class="text-center">A new title!<h1> </div> <div class="container my-3"> ...
"Yeni bir başlık" başlıklı basit HTML sitesi ve dört teknik öğe resmi.
Basit HTML sitesi.

Bu düzenlemeyi basit tutmak için herhangi bir JavaScript veya CSS'ye dokunmuyoruz. Ancak JavaScript konusunda uzmansanız, Kinsta'da bir yer bulabilirsiniz. Kinsta ekibinin bir parçası olmak için ihtiyaç duyduğunuz kodlama becerilerini kontrol edin.

Bunu yaptıktan sonra değişiklikleri yapın:

 git commit -am "Added a simple title"

Ve normalde yaptığınız gibi onları GitHub'a itin.

 git push

Her şey yolunda gittiyse, tebrikler! Sadece makineniz ve GitHub arasında bir SSH bağlantısı kurdunuz.

Farklı GitHub Hesapları için Birden Çok SSH Anahtarını Yönetin

Birden fazla GitHub hesabınız varsa - diyelim ki bir tanesi kişisel projeleriniz için ve bir tanesi işiniz için - her ikisi için de SSH kullanmak zordur. Farklı GitHub hesaplarında kimlik doğrulaması yapmak için normalde ayrı makinelere ihtiyacınız olacaktır.

Ancak bu, SSH yapılandırma dosyasını yapılandırarak kolayca çözülebilir.

İçeri girelim.

  1. Başka bir SSH anahtar çifti oluşturun ve bunu diğer GitHub hesabınıza ekleyin. Yeni anahtarı atadığınız dosyanın adını unutmayın.
     ssh-keygen -t ed25519 -C "[email protected]"
  2. SSH yapılandırma dosyasını oluşturun. Yapılandırma dosyası, ssh programına nasıl davranması gerektiğini söyler. Varsayılan olarak, yapılandırma dosyası mevcut olmayabilir, bu nedenle onu .ssh/ klasöründe oluşturun:
     touch ~/.ssh/config
  3. SSH yapılandırma dosyasını değiştirin. Yapılandırma dosyasını açın ve aşağıdaki kodu yapıştırın:
     #Your day-to-day GitHub account Host github.com HostName github.com IdentityFile ~/.ssh/id_ed25519 IdentitiesOnly yes # Work account Host github-work HostName github.com IdentityFile ~/.ssh/work_key_file IdentitiesOnly yes

Şimdi, iş veya ikincil hesabınızı kullanarak SSH aracılığıyla her kimlik doğrulamanız gerektiğinde, aşağıdakilerden repo SSH adresini biraz değiştirirsiniz:

 [email protected]:workaccount/project.git

…ile:

 [email protected]:workaccount/project.git

Özet

Tebrikler — GitHub'a SSH aracılığıyla bağlanmak için ihtiyacınız olan pratik bilgilerin çoğunu öğrendiniz!

Bu eğitimde SSH protokolüne duyulan ihtiyaç, genel ve özel anahtarlar arasındaki farklar, anahtarların nasıl oluşturulacağı, bunların GitHub'a nasıl ekleneceği ve hatta farklı GitHub hesapları için birden çok SSH anahtarının nasıl yönetileceği tartışıldı. Her şeye erişiminizi kaybetmek istemiyorsanız, özel anahtarınızın bu şekilde kalması gerektiğini unutmayın: özel.

Bu bilgiyle artık Git ve GitHub ile kusursuz bir iş akışı geliştirmeye hazırsınız. Kodlamaya devam edin!