Get In Touch
Kadıköy, İstanbul
mail@oguzerdogan.com
Ph: +90 554 524 0164
Back

SSH Key ile Birden Fazla GIT Servisini Organize Etme

Selamlar, özellikle birden fazla Github servisini ya da aynı Git servisinde birden fazla hesapla kullandığımızda authentication işlemleri oldukça sinir bozucu olabiliyor.

Bu yazımda bu durumu hızlıca nasıl çözebileceğimizi göstereceğim.

Eğer siz tek bir git servisi için bir tane ssh tanımlamak ve bunu kullanmak istiyorsanız bunun için buradaki konuya göz atabilirsiniz.

Aşağıdaki Git servislerini kullandığımız bir senaryo canlandıralım.

  • İş hesabımız için bir Bitbucket
  • İş hesabımız için bir Github
  • Kişisel hesabımız için bir Github

Şimdi bu üç hesap için nasıl ssh key oluşturacağımıza ve bunları birlikte kullanabileceğimize bakalım.

İlk olarak .ssh klasörüne gidelim, böyle bir klasör yoksa siz oluşturabilirsiniz.

cd ~/.ssh

İş hesabı için ssh keyi Bitbucket’a tanıtma.

ssh-keygen -t ed25519 -b 4096 -C "{username@emaildomain.com}" -f work_bitbucket

username@emaildomain.com: Bitbucket üzerindeki kayıtlı mail adresimiz olmalı.

ssh-add ~/.ssh/work_bitbucket

Bitbucket – Personal Settings – Security – SSH Keys – Add Key

work_bitbucket ile oluşturduğumuz anahtar çiftinden .pub olanı Bitbucket içerisinde tanıtalım. İşlem başarılıysa dialog penceresi kapanacaktır.

cat ~/.ssh/work_bitbucket.pub | pbcopy .

İş hesabı için ssh keyi Github’a tanıtma

ssh-keygen -t ed25519 -b 4096 -C "{username@emaildomain.com}" -f work_github

username@emaildomain.com: Github üzerindeki iş hesabımızın kayıtlı mail adresi olmalı.

ssh-add ~/.ssh/work_github

Github – Settings – SSH and GPG keys New SSH key

work_github ile oluşturduğumuz anahtar çiftinden .pub olanı Github içerisinde tanıtalım.

cat ~/.ssh/work_github.pub | pbcopy .

Kişisel hesap için ssh keyi Github’a tanıtma

ssh-keygen -t ed25519 -b 4096 -C "{username@emaildomain.com}" -f personal_github

username@emaildomain.com: Github üzerindeki kişisel hesabımızın kayıtlı mail adresi olmalı.

ssh-add ~/.ssh/personal_github

Github – Settings – SSH and GPG keysNew SSH key

personal_github ile oluşturduğumuz anahtar çiftinden .pub olanı Github içerisinde tanıtalım.

cat ~/.ssh/personal_github.pub | pbcopy .

SSH Config dosyasını düzenleyelim.

Terminal üzerinde aşağıdaki kod ile config dosyasına oluşturduğumuz SSH keyleri tanıtalım. (Buradaki Host ve Hostname tanımlarına dikkat edelim.)

code ~/.ssh/config

# Work BitBucket account
Host work.bitbucket.org
  HostName bitbucket.org
  AddKeysToAgent yes
  IdentityFile ~/.ssh/work_bitbucket

# GitHub Personal account
Host personal.github.com
  HostName github.com
  AddKeysToAgent yes
  IdentityFile ~/.ssh/personal_github

# GitHub Work Account
Host work.github.com
  HostName github.com
  AddKeysToAgent yes
  IdentityFile ~/.ssh/work_github

Yukarıda tanımladığımız kısımlarda iki önemli ayrıntı var.

  • İlgili hesapların SSH key dosyalarının dizinlerini belirtiyoruz.
  • İki Github hesabını birbirinden ayırmak adına Host kısmında başına bir domain vererek tanıttık. Örn: personal.github.com

Bu şekilde bir düzenleme yaptığımız için repolarımızı locale clone’lama esnasında aşağıdaki şekilde de bir düzenleme gerekiyor:

Kişisel Github clone için:

git@personal.github.com:[GitHub Account || Group]/[project].git

İş Github clone için:

git@work.github.com:[GitHub Account || Group]/[project].git

Bitbucket clone için:

git@work.bitbucket.org:[Bitbucket Account || Group]/[project].git

şeklinde düzenlemeler yaparak kullanabiliriz.

Son olarak repolarda doğru kullanıcı adı ve mail belirtebilmek için birkaç kontrol yapmakta fayda var.

git config --list

ile user.name ve user.email alanlarını kontrol ederek doğru repoda doğru kullanıcı ve mail tanımlamaları olduğunu kontrol edin.

Eğer yanlışlık varsa repoyu indirdiğiniz dizinde aşağıdaki komutları kullanarak tanımlama yapabilirsiniz.

git config --local
git config --local user.email 
git config --local user.name 

Bu sayede kullandığınız Git servislerini bir kez tanımlayarak karışıklıkların ve sürekli authentication yapma işlemlerinin önüne geçebilirsiniz.

Oğuz
Oğuz
http://www.oguzerdogan.com
Data Delivery Guy

Leave a Reply

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

We use cookies to give you the best experience. Cookie Policy