Git 101 #1 – SSH ile GitHub Bağlantısı

Bir önceki yazımda, GitHub ile Git bağlantısını sağlarken kullanıcı adı / parola ikilisini kullanmıştık. Hatta benim hesabımda 2FA açık olduğu için token ile ilerlemek durumunda kalmıştık.

Bu yazıda ise GitHub hesabımıza SSH anahtarı ile nasıl bağlanabileceğimizi göreceğiz.

GitHub üzerinde SSH ve GPG anahtarları
GitHub üzerinde SSH ve GPG anahtarları

GitHub üzerinde “settings (ayarlar)“, sonrasında da “SSH and GPG keys (SSH ve GPG anahtarları)” kısmına gelin. Yukarıdakine benzer bir ekran görmelisiniz.

Buradan “New SSH key (Yeni SSH anahtarı)” linkine tıkladığınızda, karşınıza bir başlık ve anahtar içeriği alanı gelecek. Başlık kısmına anahtarımızı tanımlayan bir isim, anahtar kısmına ise anahtarımızı yazacağız.

Linux’ta SSH Anahtar Çifti Oluşturma

Aşağıdaki komutu kullanarak “rsa” tipinde, 4096 bitlik bir anahtar oluşturacağız. Anahtara yorum olarak da GitHub hesabımızda kullandığımız e-posta adresini yazacağız. Dosya ismini varsayılan olarak bırakabilir ya da dilerseniz değiştirebilirsiniz. Tabii bu işi yapmadan önce ilgili dizinde farklı anahtarlarınızın olup olmadığına bakmakta fayda var. Ek olarak; anahtarınız için bir “passphrase” oluşturmanın daha güvenli olacağı düşüncesindeyim.:

[root@localhost ~]# ssh-keygen -t rsa -b 4096 -C "example@example.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:7qQcidu5J1dds9LexxOzM3hKa96WleSPusat/xM2d7t example@example.com
The key's randomart image is:
+---[RSA 4096]----+
|                 |
|                 |
|                 |
|        .   . .  |
|     . -S.   . . |
|. . . -.@ o . E  |
|   ..=o% X O     |
|. o.&B& . =*     |
| . =Oo--.=. .    |
+----[SHA256]-----+

Bu işlem sonunda, ev dizininizde yer alan “.ssh” altına 2 adet dosya oluşturulması beklenir. Bu dosyalardan “id_rsa” sizin “private” key’iniz. Herhangi hiç kimse, hiçbir şekilde bu anahtarı görmemeli. “id_rsa.pub” ise “public” key’iniz. Bu anahtarı ise GitHub’a vereceğiz.

cat” ile “id_rsa.pub” dosyasının içeriğini okuyoruz. Anahtarımız için bir başlık yazdıktan sonra bu dosyanın içeriğini de “Key” kısmına yapıştırıyoruz. Sonrasında ise “Add SSH Key” butonuna tıklıyoruz.

GitHub'a SSH anahtarı ekleme
GitHub’a SSH anahtarı ekleme

SSH Bağlantısını Test Etme

Anahtarımızı GitHub ile paylaştıktan sonra SSH bağlantımızı test ediyoruz:

[root@localhost ~]# ssh -T git@github.com
The authenticity of host 'github.com (140.82.121.3)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
RSA key fingerprint is MD5:16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,140.82.121.3' (RSA) to the list of known hosts.
Enter passphrase for key '/root/.ssh/id_rsa':
Hi alisezisli! You've successfully authenticated, but GitHub does not provide shell access.

Bağlantıyı ilk kez gerçekleştirdiğimiz için karşıdaki host’u tanımıyoruz. Uzak sunucunun RSA anahtarının SHA256 özeti “nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8” olarak görülüyor. Peki nereden bileceğiz bu hash’in gerçekten de GitHub’a ait olduğunu? Buradan bileceğiz.

Yukarıda görüldüğü üzere GitHub’a SSH anahtarı ile başarıyla bağlandık.

Repo’yu SSH Üzerinden Klonlama

Bu işlemi yapabilmek için, GitHub repomuzdaki “clone” kısmında “SSH” seçeneğini kulanacağız:

GitHub'dan SSH ile repo klonlama
GitHub’dan SSH ile repo klonlama

“git clone” çalıştırdığınızda aşağıdakine benzer bir sonuç görmelisiniz:

[root@localhost ~]# git clone git@github.com:alisezisli/ShellScripting101.git
Cloning into 'ShellScripting101'...
Enter passphrase for key '/root/.ssh/id_rsa':
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (18/18), done.
remote: Total 20 (delta 4), reused 11 (delta 2), pack-reused 0
Receiving objects: 100% (20/20), 17.65 KiB | 0 bytes/s, done.
Resolving deltas: 100% (4/4), done.
[root@localhost ~]# ls
bashscript  degiskenler.sh  projeler  proxy.sh  ShellScripting101

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir