Ana içeriğe geç

SSH Anahtarları Açıklandı: Hızlı ve Güvenli Uzak Erişim Rehberi

Bu kapsamlı rehber, herhangi bir sisteme daha hızlı ve daha güvenli uzak erişim için SSH anahtarlarını nasıl kurup, kullanıp, yöneteceğinizi gösterir.
· 15 dk. oku

Yapay Zeka ile Keşfedin

Uzak bir sunucuya veya GitHub deposuna her bağlandığınızda parolanızı yazmaktan bıktınız mı?

SSH anahtarları tam da aradığınız şey. Uzak sistemlere erişmek istediğinizde parola tabanlı kimlik doğrulamaya güvenli ve pratik bir alternatif sunarlar. Uzunlukları ve karmaşıklıkları sayesinde SSH anahtarları kaba kuvvet saldırılarıyla kırılması pratikte imkansız olduğundan parolalardan daha güçlü güvenlik sağlar.

Yıllar içinde, profesyonel ortamlarda güvenli uzak bağlantılar için standart haline geldiler. Uzak sunucular, bulut hizmetleri veya Git gibi sürüm kontrol sistemleriyle çalışan herkes için vazgeçilmezdirler.

Bu yazıda, SSH anahtarlarını nasıl oluşturacağınızı, uzak sistemlere nasıl ekleyeceğinizi ve güvenli şekilde yönetmek için en iyi uygulamaları nasıl hayata geçireceğinizi öğreneceksiniz.

SSH Anahtarları Nedir?

SSH anahtarları, parolaları yazmadan uzak sistemlere güvenli erişim sağlayan kriptografik kimlik bilgileridir. Yani, sayılar, büyük harfler ve özel karakterlerden oluşan karmaşık parolaları ezberlemek yerine biri açık, diğeri özel olmak üzere bir anahtar çifti oluşturursunuz.

Açık anahtarınızı erişmek istediğiniz herhangi bir sunucuya özgürce dağıtabileceğiniz bir asma kilit gibi düşünün. Özel anahtarınız ise bu kilitleri açan benzersiz anahtar gibi çalışır. Uzak bir sisteme bağlandığınızda, sistem özel anahtarınızın depolanan açık anahtarla eşleşip eşleşmediğini kontrol eder. Eşleşiyorsa, parola girmeden anında erişim sağlarsınız.

Açık anahtardan özel anahtarınızın elde edilememesi bu sistemi son derece güvenli kılar. Özel anahtarınız gizli kalmalı ve bilgisayarınızda durmalıdır; lütfen kimseyle paylaşmayın.

> Güvenli bağlantıların siber güvenliğin daha geniş manzarasında nasıl konumlandığını daha iyi anlamak için Introduction to Data Security kursunu keşfedin.

Geleneksel parola doğrulamaya kıyasla avantajlara gelince, bilmeniz gerekenler şunlardır:

  • Geliştirilmiş güvenlik – Parolaların aksine, SSH anahtarları uzunluk ve karmaşıklıkları nedeniyle tahmin edilemez veya kaba kuvvetle kırılamaz (genellikle 2048 bit veya daha fazla).
  • Artan kullanım kolaylığı – Kurulumdan sonra, her seferinde parola yazmadan sunuculara bağlanabilirsiniz.
  • Otomasyona uygun – Güvenli kimlik doğrulamaya ihtiyaç duyan betikler ve otomatik süreçler için idealdir.
  • Merkezi erişim yönetimi – Sunucularınızdaki açık anahtarları yöneterek erişimi ekleyin veya kaldırın.
  • Parola yorgunluğuna son – Karmaşık parolalar oluşturmanız, hatırlamanız veya periyodik olarak değiştirmeniz gerekmez.

SSH anahtarları, Linux sunucuları, bulut platformları ve GitHub ile GitLab gibi kod depoları dahil olmak üzere SSH’yi destekleyen neredeyse tüm sistemlerle çalışır. Profesyonel ortamlarda güvenli uzak erişim için standart haline gelmiştir.

> Bulut profesyonelleri için güvenlik ve maliyet verimliliğini birlikte ustalıkla yönetmek kritik — AWS Security and Cost Management kursunda daha fazla bilgi edinin.

Artık SSH anahtarlarının ne olduğunu biliyorsunuz; sırada onları nasıl oluşturacağınızı öğrenmek var.

SSH Anahtarları Nasıl Oluşturulur

İşletim sisteminiz ne olursa olsun, SSH anahtarlarını oluşturmak yalnızca birkaç dakikanızı alır. 

Bu işlem iki dosya üretir: özel anahtarınız (bilgisayarınızda güvenli kalması gerekir) ve açık anahtarınız (uzak sunuculara ekleyeceğiniz).

Linux/MacOS’ta SSH anahtarı oluşturma

Linux veya MacOS’ta SSH anahtarı oluşturmak için yerleşik ssh-keygen komutunu kullanacaksınız.  Başlamak için terminali açın ve şunu yazın:

ssh-keygen -t rsa -b 4096 -C "[email protected]"

Bu komut, sisteminize 4096 bit şifrelemeye sahip (çok güvenli) yeni bir RSA anahtarı oluşturmasını ve kimlik tespiti için yorum olarak e-posta adresinizi eklemesini söyler.

Sisteminiz, anahtarın nereye kaydedileceğini ve bir parola tümcesi eklenip eklenmeyeceğini soracaktır. Varsayılan konum çoğu kullanıcı için uygundur, ancak parola tümcesi dikkate değerdir. 

İyi bir parola tümcesi ekstra bir güvenlik katmanı ekler – biri özel anahtar dosyanızı ele geçirse bile, bu tümceyi bilmeden kullanamaz.

Görsel 1 - Linux/macOS'ta SSH anahtar çifti oluşturma

Görsel 1 - Linux/macOS'ta SSH anahtar çifti oluşturma

Seçimlerinizi onayladıktan sonra sisteminiz, her iki anahtarı da ev klasörünüzün .ssh dizininde oluşturur:

  • Özel anahtarınız: Uzantısı olmayan dosya (ör. id_rsa).
  • Açık anahtarınız: .pub uzantılı dosya (ör. id_rsa.pub).

Görsel 2 - Oluşturulan anahtar dosyaları

Görsel 2 - Oluşturulan anahtar dosyaları

Windows’ta SSH anahtarı oluşturma

Windows kullanıcılarının SSH anahtarı oluşturmak için birkaç iyi seçeneği vardır – Git Bash ve WSL.

Git Bash, Linux/MacOS’a benzer bir komut satırı deneyimi sunar. Windows için Git yüklüyse, bu araca zaten sahipsiniz. Git Bash’i açın ve yukarıda gösterilen aynı ssh-keygen komutunu kullanın.

Windows Subsystem for Linux (WSL) ise Windows makinenizde Linux ortamında çalışmayı tercih ediyorsanız başka iyi bir seçenektir. Komutlar, yerel bir Linux sistemindekiyle tamamen aynıdır.

Grafiksel bir arayüzü tercih edenler için PuTTYgen daha görsel bir yaklaşım sunar.

Görsel 3 - Windows'ta PuTTYgen ile anahtar üretimi

Görsel 3 - Windows'ta PuTTYgen ile anahtar üretimi

Anahtar çiftinizi oluşturmak için atmanız gereken adımlar şunlardır:

  1. Başlat menünüzden PuTTYgen’i çalıştırın.
  2. Anahtar tipi olarak RSA’yı seçin.
  3. "Generate" düğmesine tıklayın ve boş alanda farenizi hareket ettirin.
  4. Ek güvenlik için bir parola tümcesi ekleyin.
  5. Özel ve açık anahtarlarınızı ilgili düğmeleri kullanarak kaydedin.

Görsel 4 - Oluşturulan anahtar dosyaları (2)

Görsel 4 - Oluşturulan anahtar dosyaları (2)

Anahtar dosyalarını anlama

SSH anahtar oluşturma süreci, ikili olarak çalışan iki dosya üretir.

Bilgisayarınızda gizli ve güvenli kalması gereken özel anahtarınız kimliğinizi kanıtlayan bir ana anahtar gibidir. Özel anahtarlar genellikle şu şekilde adlandırılır:

  • id_ed25519 (Ed25519 anahtarları için).
  • id_rsa (RSA anahtarları için).

Herhangi bir sisteme özgürce paylaşabileceğiniz açık anahtarınız ise yalnızca özel anahtarınızın açabileceği bir kilit gibi çalışır. Açık anahtarlar, karşılık gelen özel anahtarlarıyla aynı ada sahiptir ve sonuna .pub uzantısı eklenir.

Bu sistemin güvenliği tamamen özel anahtarınızı korumanıza bağlıdır.

Onu asla paylaşmayın, e-postayla göndermeyin veya güvenilmeyen cihazlarda saklamayın. Özel anahtarınızın tehlikeye girdiğini düşünüyorsanız, derhal yeni bir çift oluşturun ve eski açık anahtarınızın bulunduğu tüm sunucuları güncelleyin.

Açık anahtar içeriğinizi şu komutla görüntüleyebilirsiniz:

cat ~/.ssh/id_rsa.pub

Görsel 5 - Açık anahtar içeriği

Görsel 5 - Açık anahtar içeriği

Çıktı, uzak sunucuları yapılandırırken ihtiyaç duyacağınız tam dizgeyi gösterir; bunu bir sonraki bölümde inceleyeceğiz.

SSH Anahtarları Uzak Sistemlere Nasıl Eklenir

Artık SSH anahtar çiftinizi oluşturduğunuza göre, erişmek istediğiniz her uzak sisteme açık anahtarınızı eklemeniz gerekir. Basitçe söylemek gerekirse, bu işlem uzak sunucuya özel anahtarınızı geçerli bir kimlik doğrulama yöntemi olarak tanımasını söyler.

Açık anahtarların uzak bir sunucuya eklenmesi

Bu işlemde pek bir şey yok; açık anahtarınızı uzak sunucudaki özel bir dosyaya eklemeniz yeterlidir. authorized_keys adı verilen bu dosya, bağlanmasına izin verilen açık anahtarların bir listesini içerir.

Anahtarınızı eklemenin en basit yolu ssh-copy-id komutudur:

ssh-copy-id username@remote_host

Bu komut uzak sunucuya bağlanır, yoksa gerekli dizinleri oluşturur ve açık anahtarınızı authorized_keys dosyasına ekler. Bu işlem sırasında son bir kez parolanızı girmeniz gerekecektir.

Görsel 6 - authorized_keys dosyasının içeriği

Görsel 6 - authorized_keys dosyasının içeriği

Sisteminizde ssh-copy-id komutu yoksa, aynı işi elle de yapabilirsiniz, ancak birkaç adım içerir.

Şu talimatları izleyin ve komutları tek tek çalıştırın:

# Açık anahtarınızı görüntüleyin ve kopyalayın
cat ~/.ssh/id_rsa.pub

# Parola doğrulamasıyla uzak sunucuya bağlanın
ssh username@remote_host

# Yoksa .ssh dizinini oluşturun
mkdir -p ~/.ssh

# authorized_keys dosyasını açın veya oluşturun ve açık anahtarınızı yapıştırın
echo "your_copied_public_key" >> ~/.ssh/authorized_keys

Ve hepsi bu kadar!

Anahtarınızı bir sistem yöneticisine iletmeniz gereken sunucularda, açık anahtar dosyanızın içeriğini onlara göndermeniz yeterlidir. Sunucuya eklemeyi onlar yapacaktır.

Anahtar kimlik doğrulaması için SSH yapılandırma

Açık anahtarınızı ekledikten sonra, güvenliği daha da artırmak için SSH sunucusunu yapılandırmak isteyebilirsiniz. Bu adımlar yönetici (sudo) ayrıcalıkları gerektirir.

SSH sunucu yapılandırmasını düzenlemek için ana yapılandırma dosyasını açın:

sudo nano /etc/ssh/sshd_config

Görsel 7 - sshd_config dosyasının içeriği

Görsel 7 - sshd_config dosyasının içeriği

Bu dosyada birkaç güvenlik iyileştirmesi yapabilirsiniz:

  • Parola ile girişleri tamamen devre dışı bırakmak için PasswordAuthentication no ayarlayın.
  • PubkeyAuthentication yes ayarlandığından emin olun (genellikle varsayılan olarak etkindir).
  • PermitRootLogin prohibit-password ayarını, root kullanıcısı için parola ile girişleri engellemek amacıyla düşünün.

Değişiklikleri yaptıktan sonra, uygulanmaları için SSH hizmetini yeniden başlatmayı unutmayın:

sudo systemctl restart sshd

Ayrıca doğru dosya izinlerinin SSH anahtar kimlik doğrulamasının çalışması için kritik olduğunu belirtmekte fayda var. SSH sunucusu güvenlik konusunda çok titizdir ve izinler fazla açıksa bağlantıları reddeder. Dosyalarınızın şu izinlere sahip olduğundan emin olun:

  • Ev dizininiz: chmod 755 ~.
  • .ssh dizini: chmod 700 ~/.ssh.
  • authorized_keys dosyası: chmod 600 ~/.ssh/authorized_keys.

Açık anahtarınız yerinde ve sunucu doğru yapılandırılmışken, artık parolanızı girmeden uzak sunuculara bağlanabilirsiniz. 

Bir sonraki bölümde, SSH anahtarlarınızı kimlik doğrulama için nasıl kullanacağınızı göstereceğim.

Kimlik Doğrulama İçin SSH Anahtarları Nasıl Kullanılır

Artık parolasız kimlik doğrulamanın kolaylığının ve güvenliğinin tadını çıkarmaya hazırsınız. SSH anahtarlarınızı kullanarak sunuculara ve kod depolarına nasıl bağlanacağınıza bakalım.

SSH anahtar kimlik doğrulamasıyla uzak bir sunucuya bağlanma

SSH anahtarlarıyla bir sunucuya bağlanmak, normal SSH erişimiyle aynı şekilde çalışır, ancak parola istemi olmadan. Terminalinizi açın ve standart SSH komutunu kullanın:

ssh username@hostname

Anahtarınızı varsayılan konumda (~/.ssh/id_rsa) sakladıysanız, SSH onu otomatik olarak bulur ve kullanır. Anahtarınızı oluştururken bir parola tümcesi belirlediyseniz, bunu girmeniz gerekir; ancak oturum başına yalnızca bir kez.

Standart olmayan konumlarda saklanan anahtarlar için, yolu -i bayrağıyla belirtin:

ssh -i ~/path/to/your/private_key username@hostname

Görsel 8 - SSH üzerinden uzak sunucuya bağlanma

Görsel 8 - SSH üzerinden uzak sunucuya bağlanma

Her bağlantıda parola tümcesi yazmak zamanla yorucu olabilir. İşte burada SSH aracısı (agent) devreye girer. Arka planda çalışır ve çözülmüş özel anahtarlarınızı bellekte güvenle tutar; böylece parola tümcenizi yalnızca bir kez girmeniz yeter.

SSH aracısını başlatmak ve anahtarınızı eklemek için:

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa

Görsel 9 - SSH agent

Görsel 9 - SSH agent

Parola tümcenizi bir kez gireceksiniz ve aracı, oturumunuz boyunca sonraki tüm bağlantıların kimlik doğrulamasını yönetecektir. Bu, sunuculara birden çok kez bağlanmanız veya birden çok SSH bağlantısı kuran uygulamalar kullanmanız gerektiğinde faydalıdır.

macOS’ta SSH aracısı otomatik olarak başlar ve ilk bağlantı sırasında "parola tümcesini anahtar zincirinde hatırla" seçeneğini etkinleştirerek sonraki oturumlarda tekrar girmeyi önleyebilirsiniz. Ne yazık ki bu özellik yalnızca macOS’a özeldir.

GitHub/GitLab kimlik doğrulaması için SSH anahtarları kullanma

GitHub ve GitLab gibi hizmetler SSH anahtar kimlik doğrulamasını destekler ve parola tabanlı kimlik doğrulamaya göre bunu önerir.

SSH anahtarınızı GitHub’a eklemek için önce GitHub’ı açıp hesabınıza giriş yapın. Ardından sağ üst köşedeki profil resminize tıklayın ve "Settings" seçeneğini seçin. Kenar çubuğunda "SSH and GPG keys"e tıklayın:

Görsel 10 - GitHub kimlik doğrulama kurulumu (1)

Görsel 10 - GitHub kimlik doğrulama kurulumu (1)

"New SSH key"e tıklayın, anahtarınıza açıklayıcı bir başlık verin, açık anahtarınızı "Key" alanına yapıştırın ve son olarak "Add SSH key"e tıklayın:

Görsel 11 - GitHub kimlik doğrulama kurulumu (2)

Görsel 11 - GitHub kimlik doğrulama kurulumu (2)

Her şey tamamlandığında, anahtarın hesabınıza eklendiğini bildiren bir başarı mesajı göreceksiniz:

Görsel 12 - GitHub kimlik doğrulama kurulumu (3)

Görsel 12 - GitHub kimlik doğrulama kurulumu (3)

Anahtarınızı ekledikten sonra, HTTPS URL’leri yerine SSH URL’lerini kullanarak depoları klonlayabilir, çekebilir ve gönderebilirsiniz. Kullanacağınız komut şudur:

git clone [email protected]:username/repository.git

Görsel 13 - SSH üzerinden depo klonlama

Görsel 13 - SSH üzerinden depo klonlama

Hepsi bu. GitLab için süreç çok benzerdir—hesap ayarlarınızda SSH Keys bölümünü aramanız yeterli.

Özetlemek gerekirse, Git işlemleri için SSH kullanmak, uzak depoyla her etkileşimde kullanıcı adı ve parola girmenizi gerektirmez. SSH anahtarınız güvenli kimlik doğrulamayı otomatik olarak sağlar.

Birden çok hizmetle (hem GitHub hem GitLab gibi) çalışıyorsanız, her hizmet için ayrı anahtarlar oluşturmayı düşünebilirsiniz. Bu yaklaşım, bir anahtar tehlikeye girerse maruziyeti sınırlayarak güvenliği artırır.

> Depoları yönetmeye daha derinlemesine dalmak için Intermediate GitHub Concepts kursuna göz atın.

SSH Anahtarlarını Yönetme

SSH anahtarlarını birden çok sistem ve hizmette kullandıkça, er ya da geç onları yönetmenin bir yoluna ihtiyaç duyacaksınız.

Bu bölümde, mevcut anahtarları takip etme, eski veya tehlikeye girmiş anahtarları kaldırma ve olası sorunları giderme konularında nelerin gerektiğini göstereceğim.

SSH anahtarlarını görüntüleme ve listeleme

Tüm SSH anahtarlarınızı, ev klasörünüzdeki .ssh dizinini kontrol ederek görüntüleyebilirsiniz. Bu dizin, hem özel anahtarlarınızı hem de karşılık gelen açık anahtarlarını içerir.

SSH dizininizdeki tüm dosyaları listelemek için aşağıdaki komutu çalıştırın:

ls -la ~/.ssh

Görsel 14 - .ssh dizinindeki tüm dosyalar

Görsel 14 - .ssh dizinindeki tüm dosyalar

Bu komut, gizli olanlar dahil dizindeki tüm dosyaları gösterir. Genellikle şu dosyaları görürsünüz:

  • id_rsa - Özel RSA anahtarınız.
  • id_rsa.pub - Açık RSA anahtarınız.
  • known_hosts - Bağlandığınız sunucuların listesi.
  • authorized_keys - Bu makineye erişebilen açık anahtarlar (sunucu olarak yapılandırıldıysa).
  • config - SSH istemci yapılandırmanız (oluşturduysanız).

Farklı hizmetler için birden fazla anahtar oluşturduysanız, oluşturma sırasında belirttiğiniz adlara sahip ek anahtar çiftleri görürsünüz.

Belirli bir açık anahtarın ne içerdiğini kontrol etmek için şu komutu çalıştırın:

cat ~/.ssh/id_rsa.pub

Görsel 15 - Açık anahtar içeriği

Görsel 15 - Açık anahtar içeriği

Bu, ssh-rsa ile başlayan ve yorumunuzla (genellikle e-posta adresiniz) biten tam açık anahtarı görüntüler.

SSH anahtarlarını kaldırma

Zamanla, farklı nedenlerle SSH anahtarlarını kaldırmanız gerekebilir – daha güçlü bir anahtar türüne geçiyor olabilirsiniz, bir cihaz kaybolmuş olabilir veya belirli sistemlere erişime artık ihtiyaç duymuyor olabilirsiniz.

Anahtarları uzak bir sunucudan kaldırmak için authorized_keys dosyasını düzenlemeniz gerekecek:

# Uzak sunucuya bağlanın
ssh username@remote_host

#  authorized_keys dosyasını açın:
nano ~/.ssh/authorized_keys

GitHub ve GitLab için anahtarları kaldırmak daha da basittir:

  1. Hesap ayarlarınıza gidin.
  2. "SSH and GPG keys" bölümüne gidin.
  3. Kaldırmak istediğiniz anahtarı bulun.
  4. Anahtarın yanındaki silme simgesine tıklayın.

Görsel 16 - GitHub'da anahtar silmeyi onaylama

Görsel 16 - GitHub'da anahtar silmeyi onaylama

Ve son olarak, yerel makinenizden anahtarları kaldırmak için, dosyaları silmeniz yeterlidir:

rm ~/.ssh/id_rsa ~/.ssh/id_rsa.pub

id_rsa adını, kaldırmak istediğiniz anahtarın adıyla değiştirin.

Bir uzak ana bilgisayarı known_hosts dosyanızdan kaldırmanız gerekiyorsa (genellikle bir sunucu yeniden yapılandırıldıktan sonra), şu komutu çalıştırın:

ssh-keygen -R hostname

Bu, belirtilen ana bilgisayarın girdisini known_hosts dosyanızdan kaldırır; "host key verification failed" hatasını aldığınızda işinize yarar.

Yaygın SSH anahtar sorunlarını giderme

SSH anahtar kimlik doğrulaması bazen çeşitli nedenlerle başarısız olabilir. Bu bölümde, yaygın sorunlara çözümler göstereceğim.

  • İzin sorunları. SSH, güvenlik nedenleriyle dosya izinleri konusunda katıdır. Anahtarlarınızın izinleri yanlışsa kimlik doğrulama başarısız olur. Şunlarla düzeltin:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub
chmod 600 ~/.ssh/authorized_keys
  • Parola tümcesi sorunları. Parola tümcenizi unuttuysanız, ne yazık ki kurtarmanın bir yolu yok. Şu adımları uygulamanız gerekir:
    • Yeni bir anahtar çifti oluşturun.
    • Yeni açık anahtarı uzak sistemlerinize ekleyin.
    • Eski anahtar çiftini kaldırın.
  • Bağlantı reddedildi. "Connection refused" hatası alırsanız, birçok olası neden olabilir. Aşağıdaki adımları izleyin:
    • Sunucunun çalıştığını ve erişilebilir olduğunu doğrulayın.
    • Sunucuda SSH hizmetinin çalıştığını kontrol edin.
    • Doğru bağlantı noktasını kullandığınızı onaylayın (varsayılan 22’dir).
  • Kimlik doğrulama hataları. "Permission denied (publickey)" hataları alırsanız, şu adımları uygulayın:
    • Açık anahtarınızın sunucunun authorized_keys dosyasına doğru şekilde eklendiğinden emin olun.
    • Sunucunun açık anahtar kimlik doğrulamasına izin verdiğini kontrol edin.
    • Doğru kullanıcı adı ve ana bilgisayar adını kullandığınızı doğrulayın.
    • Doğru özel anahtarı kullandığınızdan emin olun.
  • Agent sorunları. SSH aracısı çalışmıyorsa bu tür sorunlar ortaya çıkabilir. Şunları yapın:
    • ssh-add -l ile aracının çalıştığını doğrulayın.
    • Çalışmıyorsa eval "$(ssh-agent -s)" ile başlatın.
    • ssh-add ~/.ssh/id_rsa ile anahtarınızı ekleyin.

Sırada, SSH anahtarı yönetimi için bazı en iyi uygulamaları keşfedelim.

SSH Anahtarı Yönetimi İçin En İyi Uygulamalar

SSH kimlik doğrulaması, sistemlerinizi istenmeyen erişime karşı korumak için harikadır; ama dürüst olalım – bazen biraz zahmetli olabilir. Az sonra değineceğim ipuçları, güçlü güvenlikle günlük kullanım kolaylığı arasındaki dengeyi bulmakla ilgilidir.

SSH anahtarları için güçlü parola tümceleri kullanma

Özel anahtarınızın parola tümcesi, birisi anahtar dosyanızı ele geçirirse son savunma hattı görevi görür. Her zaman güçlü ve benzersiz bir parola tümcesi seçin; tahmin edilmesi zor ama sizin için hatırlaması kolay olsun.

İyi bir parola tümcesinin özellikleri şunlardır:

  • En az 12-15 karakter içerir.
  • Büyük harf, küçük harf, rakam ve özel karakter karışımı barındırır.
  • Yaygın kalıplardan veya sözlük sözcüklerinden kaçınır.
  • Diğer hizmetlerle yeniden kullanılmaz.

Kritik sistemlere veya üretim ortamlarına erişen anahtarlar için güçlü bir parola tümcesi kesinlikle şarttır. Ara sıra yazmanın getirdiği küçük zahmet, güvenlik risklerinden çok daha önemsizdir.

SSH aracısını kullandığınızda parola tümcenizi oturum başına yalnızca bir kez girmeniz gerekir. Bu da güçlü parola tümcelerini günlük kullanım için pratik hale getirir. Karmaşık parola tümcelerini güvenle saklamak için bir parola yöneticisi kullanmayı düşünün.

Farklı sistemler için farklı anahtarlar kullanma

Tek bir anahtarı her yerde kullanmak yerine, farklı hizmetler veya güvenlik seviyeleri için her zaman ayrı anahtar çiftleri oluşturmalısınız. Bu bölümlendirme, bir anahtar tehlikeye girerse maruziyetinizi sınırlar.

Örneğin şunları oluşturabilirsiniz:

  • Şirketinizin sunucuları için bir iş anahtarı.
  • Ev projeleriniz için bir kişisel anahtar.
  • GitHub veya GitLab için özel bir anahtar.
  • Üretim sistemleri için yüksek güvenlikli bir anahtar.

Yine, küçük bir zahmet; ancak fazlasıyla değer.

Birden fazla anahtar oluştururken, amaçlarını belirten açıklayıcı dosya adları kullanın:

ssh-keygen -t rsa -b 4096 -f ~/.ssh/github_rsa -C "github access"

Bağlanırken belirli bir anahtar kullanmak için, pratik olarak bir yapılandırma dosyası ayarlayabilirsiniz:

# ~/.ssh/config
Host github.com
    IdentityFile ~/.ssh/github_rsa

Host companyserver
    HostName 255.255.255.255
    User ubuntu
    IdentityFile ~/.ssh/company_server_rsa

Bu yaklaşım, bir anahtar tehlikeye girerse tüm sistemleri güncellemek yerine yalnızca o tek anahtarı değiştirmenizi garanti eder.

SSH anahtarlarını düzenli olarak döndürme

SSH anahtarlarını periyodik olarak değiştirmek, tespit edilmemiş ihlallerin riskini azaltır ve güvenlik en iyi uygulamalarına uyar. 

Bunu ne sıklıkla yapmanız gerektiği, hassasiyet düzeyine bağlıdır:

  • Kişisel projeler: 1-2 yılda bir.
  • Kurumsal sistemler: 6-12 ayda bir.
  • Yüksek güvenlikli ortamlar: 3-6 ayda bir.
  • Ekip üyeleri ayrıldıktan veya şüpheli etkinlikten hemen sonra.

SSH anahtarlarını döndürme süreci; yeni anahtar çiftleri oluşturmayı, yeni açık anahtarları sunucularınıza eklemeyi, yeni anahtarların çalıştığını doğrulamayı, eski açık anahtarları sunuculardan kaldırmayı ve eski özel anahtarları yerel makinenizden silmeyi içerir.

Başka bir deyişle, biraz zaman alır; bu nedenle planınıza dahil edin.

Ayrıca, hangi anahtarların hangi sistemlere erişimi olduğunu kaydetmek iyi bir uygulamadır. Kuruluşlar için, döndürmeyi sistematik olarak ele alan otomatik anahtar yönetim araçlarını uygulamayı düşünün.

SSH anahtar kimlik doğrulamasını zorunlu kılma

Uygulayabileceğiniz en güçlü güvenlik önlemi, sunucularınızda parola doğrulamayı tamamen devre dışı bırakmak ve tüm bağlantılar için SSH anahtarlarını zorunlu kılmaktır.

Anahtar tabanlı kimlik doğrulamayı zorunlu kılmak için şu adımları izleyin:

# SSH sunucu yapılandırmanızı düzenleyin
sudo nano /etc/ssh/sshd_config

# Bu kritik güvenlik seçeneklerini ayarlayın
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no

# SSH hizmetini yeniden başlatın
sudo systemctl restart sshd

Bu yapılandırma, parola kaba kuvvet saldırılarını tamamen engeller. 

Ancak bu değişiklikleri yapmadan önce, kendinizi kilitlememek için SSH anahtar kimlik doğrulamanızın düzgün çalıştığından emin olun. Olabiliyor.

SSH Anahtarlarının Özeti

Sonuç olarak, SSH anahtarlarının uzak sistemlere bağlanma biçiminizi dönüştürdüğünü söylemek güvenlidir. Parolalardan anahtar tabanlı kimlik doğrulamaya geçmek, günlük iş akışınızı hem güvenlik hem de kullanım kolaylığı açısından geliştirir.

Bir diğer avantaj, sürecin çok karmaşık olmamasıdır. Anahtarları oluşturmanız, eriştiğiniz sunuculara eklemeniz ve parolaları yazmadan bağlanmanız gerekir. Hepsi bu! Geleneksel parola tabanlı kimlik doğrulamayla karşılaştırıldığında, SSH anahtarları bağlantılarınızı daha hızlı ve güvenilir hale getirir ve ayrıca parola tahmini gibi yaygın saldırı yöntemlerini engeller.

Özel anahtarınızın korunması gerektiğini unutmayın. Güçlü bir parola tümcesi kullanın, anahtarınızı güvenli tutun ve özellikle SSH anahtarlarını bölümlendirmeye ilişkin olanlar başta olmak üzere bu yazıda belirtilen en iyi uygulamaları izleyin. 

SSH anahtarları ve genel olarak komut satırıyla çalışmak hakkında daha fazla bilgi edinmek istiyorsanız, DataCamp’in şu kursları en iyi sonraki adımınızdır:

SSS

SSH anahtarlarının parolalara göre avantajları nelerdir?

SSH anahtarları, parolalar gibi kaba kuvvetle kırılamadıkları için daha güçlü güvenlik sağlar. Ayrıca, her bağlantı için parola yazmanız gerekmediğinden daha fazla kolaylık sunar. Ek olarak, SSH anahtarları güvenli bağlantı kurması gereken betikler ve programlar için güvenli otomasyon sağlar.

SSH anahtarlarını kurmak için teknik becerilere ihtiyacım var mı?

Temel komut satırı aşinalığı yardımcı olsa da şart değildir. Kurulum süreci, anahtarlarınızı oluşturmak ve uzak sistemlere eklemek için birkaç basit komut çalıştırmayı içerir. Komut satırında yeni olsanız bile, bu yazıdaki adım adım talimatları izleyerek SSH anahtarlarını başarıyla hayata geçirebilirsiniz.

SSH anahtarlarını tüm işletim sistemlerinde kullanabilir miyim?

Evet. SSH anahtarları Windows, macOS, Linux ve diğer Unix tabanlı sistemlerde çalışır. Tüm modern işletim sistemleri SSH araçlarını ya varsayılan olarak içerir ya da isteğe bağlı paketler aracılığıyla kolayca sunar. Aynı anahtar çifti farklı işletim sistemlerinde de kullanılabilir.

"Permission denied (publickey)" hatalarını nasıl gideririm?

Bu yaygın hata genellikle anahtarınızın sunucuda düzgün şekilde kaydedilmediğini gösterir. Açık anahtarınızın uzak sistemdeki authorized_keys dosyasına doğru şekilde eklendiğini doğrulayın, dosya izinlerinin doğru olduğunu kontrol edin (özel anahtar için 600) ve bağlanırken doğru kullanıcı adı ve ana bilgisayar adını kullandığınızdan emin olun.

Aynı SSH anahtarını hem iş hem kişisel projeler için kullanmak mümkün mü?

Teknik olarak mümkün olsa da güvenlik nedeniyle önerilmez. Farklı ortamlar için ayrı anahtarlar kullanmak, bir anahtar tehlikeye girerse maruziyetinizi sınırlar. Daha iyi güvenlik sınırları sağlamak için iş, kişisel projeler ve hassas sistemler için ayrı anahtarlar oluşturun.

Dario Radečić

Yazar

Dario Radečić

Hırvatistan merkezli Kıdemli Veri Bilimci. 700’ün üzerinde yayımlanmış makaleyle 10 M+ görüntüleme elde eden, önde gelen bir teknoloji yazarı. TPOT ile Makine Öğrenimi Otomasyonu kitabının yazarı.

Konular

İlgili