X

Lütfen Ülke (Bölge) Seçiniz

Türkiye (Türkçe)Türkiye (Türkçe)
X
X

Lütfen Ülke (Bölge) Seçiniz

Türkiye (Türkçe)Türkiye (Türkçe)
X
🔥 Türkiye Lokasyon VDS & VPS sunucularında %20 indirim! Kupon Kodu: Türkiye'de %20 İndirim! Kod: DATA20
Şirketimizdeki KALİTEYİ Yakından Tanıyın!

SSH Anahtarı ile Şifresiz ve Güvenli Sunucu Girişi

SSH Anahtarı ile Şifresiz ve Güvenli Sunucu Girişi

SSH key (SSH anahtarı), sunucuya parola yazmadan ve parola tahmini saldırılarına kapı bırakmadan giriş yapmanın en güvenilir yoludur. İnternete açık her Linux sunucu, ilk dakikadan itibaren otomatik botların parola denemeleriyle karşılaşır; güçlü bir parola bile zamanla sızdırılabilir, tekrar kullanılabilir veya yanlış yere yazılabilir. Anahtar tabanlı kimlik doğrulamada ise sunucuya yalnızca açık anahtarınız yüklenir, özel anahtar bilgisayarınızdan hiç çıkmaz. Bu rehberde Ed25519 anahtarı oluşturmayı, anahtarı Windows, macOS ve Linux'tan sunucuya eklemeyi, parola girişini güvenli biçimde kapatmayı ve sık yapılan hataları adım adım anlatıyoruz.

SSH Anahtarı Nasıl Çalışır?

SSH anahtarları asimetrik şifrelemeye dayanır ve her zaman çift olarak üretilir:

  • Özel anahtar (private key): Bilgisayarınızda kalır, kimseyle paylaşılmaz. Örneğin ~/.ssh/id_ed25519.
  • Açık anahtar (public key): Sunucuya kopyalanır. Adı .pub ile biter, örneğin ~/.ssh/id_ed25519.pub.

Bağlanırken sunucu, kullanıcının ~/.ssh/authorized_keys dosyasındaki açık anahtarlarla eşleşen bir özel anahtara sahip olduğunuzu kanıtlamanızı ister. İstemciniz bu kanıtı özel anahtarla imzalayarak sunar; özel anahtarın kendisi ağ üzerinden hiçbir zaman gönderilmez. Bu yüzden sunucu ele geçirilse bile saldırgan sizin özel anahtarınızı elde edemez.

Hangi Anahtar Türünü Seçmeli?

TürÖnerilen kullanımNot
Ed25519Yeni kurulumlar için varsayılan tercihKısa anahtar, hızlı ve güçlü; güncel tüm OpenSSH sürümlerinde desteklenir
RSA 4096Ed25519 desteklemeyen eski sistemler ve cihazlarUyumluluğu yüksek; 2048 bitten kısa RSA anahtarı kullanmayın
ECDSAÖzel gereksinimlerÇalışır, ancak genel kullanımda Ed25519 daha çok tercih edilir
DSAKullanmayınGüncel OpenSSH sürümlerinde varsayılan olarak kapalıdır

Ubuntu 22.04/24.04 ve AlmaLinux 9 sunucular Ed25519 anahtarlarını sorunsuz kabul eder. Bu rehberde Ed25519 kullanacağız.

Adım 1: Anahtar Çiftini Oluşturun

Bu işlem sunucuda değil, bağlanacağınız bilgisayarda yapılır. Windows 10/11'de PowerShell, macOS ve Linux'ta Terminal açıp şu komutu çalıştırın:

ssh-keygen -t ed25519 -C "is-laptopu"

-C parametresi yalnızca bir açıklamadır; anahtarın hangi cihaza ait olduğunu sonradan anlamanızı kolaylaştırır. Komut önce kayıt yerini sorar; Enter ile varsayılan konumu kabul edebilirsiniz. Ardından bir passphrase (anahtar parolası) istenir. Passphrase, özel anahtar dosyanızı diskte şifreler; dizüstü bilgisayarınız çalınsa ya da dosya bir şekilde kopyalansa bile anahtar tek başına işe yaramaz. Otomasyon için özel olarak üretilen anahtarlar dışında passphrase belirlemenizi öneririz.

İşlem tamamlandığında iki dosya oluşur:

~/.ssh/id_ed25519       # özel anahtar - paylaşmayın
~/.ssh/id_ed25519.pub   # açık anahtar - sunucuya eklenecek

Windows'ta bu dosyalar C:\Users\KullaniciAdi\.ssh\ klasöründedir.

Adım 2: Açık Anahtarı Sunucuya Ekleyin

Linux ve macOS: ssh-copy-id

En kolay yol ssh-copy-id aracıdır. Bu araç açık anahtarı sunucudaki doğru dosyaya ekler ve klasör izinlerini ayarlar:

ssh-copy-id -i ~/.ssh/id_ed25519.pub [email protected]

# SSH farklı bir portta çalışıyorsa
ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 2222 [email protected]

Bu adımda son bir kez kullanıcının parolası sorulur. Sonrasında anahtarla bağlanabilirsiniz.

Windows: PowerShell ile tek satırda

Windows'taki OpenSSH istemcisinde ssh-copy-id bulunmaz. Aynı işi PowerShell'de şu komutla yapabilirsiniz:

type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh [email protected] "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

Komut, açık anahtar içeriğini SSH bağlantısı üzerinden sunucuya aktarır, .ssh klasörünü gerekirse oluşturur, anahtarı authorized_keys dosyasının sonuna ekler ve izinleri düzeltir.

Elle ekleme

Sunucu panelindeki konsoldan çalışıyorsanız ya da yukarıdaki yöntemler mümkün değilse açık anahtarın içeriğini (tek satır, ssh-ed25519 AAAA... ile başlar) kopyalayıp sunucuda şu adımları izleyin:

mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys     # anahtarı tek satır olarak yapıştırın
chmod 600 ~/.ssh/authorized_keys

AlmaLinux 9 gibi SELinux etkin sistemlerde dosyaları elle oluşturduysanız güvenlik bağlamını da düzeltin; aksi halde anahtar doğru olsa bile reddedilebilir:

restorecon -Rv ~/.ssh

PuTTY kullanıcıları için

PuTTY, OpenSSH biçimindeki özel anahtarı doğrudan kullanmaz. PuTTYgen'i açıp Conversions > Import key ile id_ed25519 dosyasını içe aktarın ve Save private key ile .ppk dosyası olarak kaydedin. Ardından PuTTY'de Connection > SSH > Auth > Credentials bölümünden bu dosyayı seçin. Anahtarı doğrudan PuTTYgen ile de üretebilirsiniz; bu durumda sunucuya eklenecek açık anahtar metni PuTTYgen penceresinin üst kısmında OpenSSH biçiminde gösterilir.

Adım 3: Anahtarla Girişi Test Edin

Yeni bir terminal penceresinde bağlanmayı deneyin:

ssh -i ~/.ssh/id_ed25519 [email protected]

Passphrase belirlediyseniz kullanıcı parolası yerine anahtar parolası sorulur. Sorun yaşarsanız ssh -v çıktısında Offering public key ve Authenticated satırlarını arayın; anahtarın sunulup sunulmadığını ve kabul edilip edilmediğini buradan görürsünüz. Bağlantı adımlarının genelini SSH ile sunucuya bağlanma rehberimizde ele aldık.

Adım 4: ssh-agent ile Passphrase'i Her Seferinde Yazmayın

Passphrase güvenliği artırır ama her bağlantıda yazmak yorucu olabilir. ssh-agent, kilidi açılmış anahtarı oturum boyunca bellekte tutar:

# Linux / macOS
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

Windows'ta OpenSSH Authentication Agent hizmeti varsayılan olarak devre dışıdır. Yönetici PowerShell penceresinde bir kez etkinleştirmeniz yeterlidir:

Get-Service ssh-agent | Set-Service -StartupType Automatic
Start-Service ssh-agent
ssh-add $env:USERPROFILE\.ssh\id_ed25519

Adım 5: Parola ile Girişi Kapatın

Anahtarla girişin çalıştığından emin olduktan sonra parola ile girişi kapatmak, brute force saldırılarını büyük ölçüde etkisiz bırakır. Bu adımdan önce mevcut SSH oturumunuzu kapatmayın; bir hata yaparsanız açık oturum üzerinden geri alabilirsiniz.

Güncel Ubuntu ve AlmaLinux sürümlerinde ana yapılandırma dosyası /etc/ssh/sshd_config, dosyanın başında Include /etc/ssh/sshd_config.d/*.conf satırıyla ek dosyaları okur. OpenSSH'de bir ayar için ilk okunan değer geçerlidir. Bulut imajlarında bulunan /etc/ssh/sshd_config.d/50-cloud-init.conf gibi dosyalar PasswordAuthentication yes içerebilir ve ana dosyadaki ayarınızı ezebilir. Bu yüzden ayarı, adı alfabetik olarak önce gelen ayrı bir dosyaya yazmak en güvenli yoldur:

sudo nano /etc/ssh/sshd_config.d/00-anahtar-giris.conf
PubkeyAuthentication yes
PasswordAuthentication no
KbdInteractiveAuthentication no

Ardından yapılandırmayı sözdizimi açısından test edin ve gerçekten uygulanan değerleri kontrol edin:

sudo sshd -t
sudo sshd -T | grep -Ei 'passwordauthentication|kbdinteractive|pubkeyauthentication'

Çıktıda passwordauthentication no görüyorsanız ayar doğru okunuyor demektir. Son olarak servisi yeniden yükleyin:

# Ubuntu 22.04 / 24.04
sudo systemctl reload ssh

# AlmaLinux 9
sudo systemctl reload sshd

Mevcut oturumu kapatmadan yeni bir pencerede hem anahtarla girişin çalıştığını hem de parola ile girişin reddedildiğini test edin. Parola denemesini zorlamak için şu komutu kullanabilirsiniz:

ssh -o PubkeyAuthentication=no -o PreferredAuthentications=password [email protected]

Bu komutun Permission denied (publickey) hatasıyla sonuçlanması beklenen davranıştır. Root girişini kapatmak ve SSH portunu değiştirmek gibi ek sertleştirme adımları için SSH portu değiştirme ve root girişini kapatma yazımıza göz atabilirsiniz.

Sık Yapılan Hatalar

  • Yanlış izinler: OpenSSH, başkalarının yazabildiği .ssh klasörlerini ve authorized_keys dosyalarını güvenlik nedeniyle yok sayar. Klasör 700, dosya 600 olmalı; ev dizini de başka kullanıcılar tarafından yazılabilir olmamalıdır.
  • Anahtarın birden fazla satıra bölünmesi: Kopyalama sırasında satır kırılırsa anahtar geçersiz olur. Her açık anahtar tek satırdır.
  • Yanlış kullanıcıya ekleme: Anahtarı root'un dosyasına ekleyip deploy kullanıcısıyla bağlanmaya çalışmak sık görülen bir karışıklıktır. Anahtar, bağlanacağınız kullanıcının ev dizinindeki dosyada olmalıdır.
  • Özel anahtarı paylaşmak: Sunucuya, e-postaya veya bulut klasörlerine .pub uzantısız dosyayı asla göndermeyin.
  • Tek anahtar, tek cihaz: Anahtarınızı kaybetme ihtimaline karşı ikinci bir güvenli cihazın anahtarını da ekleyin ve sağlayıcınızın konsol erişimini nasıl kullanacağınızı önceden öğrenin.

Anahtarları Yönetmek: Ekleme, Kısıtlama ve İptal

authorized_keys dosyasında her satır bir açık anahtardır. Bir ekip arkadaşı ayrıldığında ya da bir cihaz kaybolduğunda yapmanız gereken tek şey ilgili satırı silmektir; değişiklik bir sonraki bağlantı denemesinden itibaren geçerli olur, servisi yeniden başlatmanız gerekmez. Bu nedenle anahtar üretirken -C ile anlamlı açıklamalar vermek, hangi satırın kime ait olduğunu bulmayı kolaylaştırır.

Bir anahtarın satırının başına seçenek ekleyerek o anahtarın yetkisini daraltabilirsiniz. Örneğin yalnızca belirli bir IP adresinden kullanılabilen bir yedekleme anahtarı şöyle tanımlanır:

from="198.51.100.20",no-agent-forwarding,no-port-forwarding,no-X11-forwarding ssh-ed25519 AAAA... yedek-sunucusu

Bu satırdaki anahtar başka bir adresten kullanılmaya çalışıldığında reddedilir. Otomasyon için oluşturulan, passphrase taşımayan anahtarlarda bu tür kısıtlamalar, anahtar sızsa bile verilecek zararı sınırlar.

Sık Sorulan Sorular

SSH key kullanmak parolaya göre neden daha güvenli?

Parolalar tahmin edilebilir, tekrar kullanılabilir veya sızdırılabilir. Ed25519 gibi bir anahtarın deneme yanılma ile bulunması pratikte mümkün değildir ve özel anahtar ağ üzerinden hiç gönderilmez. Parola girişini kapattığınızda botların denemeleri doğrudan reddedilir.

Aynı anahtarı birden fazla sunucuda kullanabilir miyim?

Evet, açık anahtarınızı istediğiniz kadar sunucuya ekleyebilirsiniz. Ancak her cihaz için ayrı anahtar üretmek daha iyi bir uygulamadır; bir cihazı kaybettiğinizde yalnızca o cihazın açık anahtarını sunuculardan silmeniz yeterli olur.

Özel anahtarımı kaybedersem ne olur?

Parola girişini kapattıysanız ve başka bir anahtarınız yoksa SSH ile giremezsiniz. Bu durumda sunucu panelindeki konsoldan giriş yapıp yeni açık anahtarınızı authorized_keys dosyasına ekleyebilirsiniz. Bu yüzden yedek bir anahtar tanımlamak önemlidir.

Passphrase zorunlu mu?

Zorunlu değildir, ancak önerilir. Passphrase olmadan özel anahtar dosyasını ele geçiren biri sunucularınıza doğrudan girebilir. Otomatik yedekleme gibi insansız işlemler için ayrı, yetkisi kısıtlanmış anahtarlar kullanmak daha doğru bir yaklaşımdır.

Anahtar doğru olduğu halde Permission denied alıyorum, neden?

En sık nedenler yanlış dosya izinleri, anahtarın yanlış kullanıcıya eklenmesi ve SELinux bağlamıdır. Sunucuda journalctl -u ssh (AlmaLinux'ta journalctl -u sshd) çıktısı reddin nedenini çoğunlukla açıkça gösterir.

SSH key ile giriş, sunucu güvenliğinde en az çabayla en büyük farkı yaratan adımlardan biridir. Linux veya Windows işletim sistemi seçenekleriyle sunulan Türkiye lokasyonlu VDS paketlerimizde ya da daha yüksek kaynak gerektiren projeler için fiziksel dedicated sunucularımızda bu yapılandırmayı ilk günden uygulayabilirsiniz.

VDS Sanal Sunucu
TÜRKİYE / ANKARA
₺139 /ay'dan başlayan
Paketleri İncele
  •  NVMe SSD Disk
  •  DDoS Koruması Dahil
  •  Limitsiz Trafik
  •  0–15 Dakikada Kurulum
  •  Windows - Linux
  •  7/24 Destek
Top
Destek Hattı0850 840 90 28

DNS Adresleri

ns1.datahost.net.tr
ns2.datahost.net.tr
DataHost Destek Çevrimiçi

Satış öncesi tüm sorularınız için WhatsApp hattımıza yazın; size hızlıca yardımcı olalım.

WhatsApp'tan Yaz