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 keys – New 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.