🔐 Ubuntu'da SSH Anahtarları Kurulumu: Güvenli ve Şifresiz Erişim Rehberi
Bu rehber, Ubuntu sunucularınıza SSH anahtarlarıyla güvenli ve şifresiz erişim sağlamayı adım adım açıklar.
Yeni bir Ed25519 anahtar çifti oluşturacak, genel anahtarı ssh-copy-id komutuyla sunucuya aktaracak ve parolalı erişimi kapatarak tam güvenlik sağlayacaksınız.
🧠 1. Teknik Özet
| Alan | Açıklama |
|---|---|
| Ana Teknik Konu | Ubuntu üzerinde SSH anahtar tabanlı kimlik doğrulama kurulumu |
| Çözülen Problem | Parola tabanlı SSH bağlantılarının brute-force saldırılarına açık olması |
| İzlenen Adımlar | 1️⃣ Anahtar oluşturma • 2️⃣ Genel anahtarı sunucuya kopyalama • 3️⃣ Parola girişini kapatma • 4️⃣ Gelişmiş güvenlik ayarları |
| Önerilen Algoritma | 🔒 Ed25519 – modern, hızlı ve güçlü güvenlik sağlar |
🚀 2. SSH Anahtarlarının Mantığı
SSH (Secure Shell), uzak sistemlere güvenli erişim için kullanılır.
Parolalar zayıf kalırken, SSH anahtarları kamu/özel anahtar şifrelemesiyle güvenliği artırır.
| Tür | Açıklama |
|---|---|
| Özel Anahtar (Private Key) | Kimliğini kanıtlayan dosyadır. Yalnızca sende kalır. |
| Genel Anahtar (Public Key) | Sunucuya kopyalanır ve giriş doğrulaması için kullanılır. |
💡 Ed25519, hız ve güvenlik açısından 2025 itibarıyla en önerilen anahtar algoritmasıdır.
⚙️ 3. Gereksinimler
| Gereksinim | Açıklama |
|---|---|
| Ubuntu sürümü | 22.04 LTS veya üzeri |
| Kullanıcı | sudo yetkisine sahip, root olmayan kullanıcı |
| Paketler | openssh-client (yerel), openssh-server (sunucu) |
# SSH bileşenlerini yükle
sudo apt update
sudo apt install openssh-server openssh-client
🔑 4. SSH Anahtar Çifti Oluşturma
Yeni bir SSH anahtar çifti oluşturmak için aşağıdaki komutu çalıştır:
ssh-keygen -t ed25519
Ardından sırasıyla:
Kayıt yolu: ~/.ssh/id_ed25519 (ENTER ile onayla)
Parola (passphrase): Güçlü bir parola belirle
Sonuç:
~/.ssh/id_ed25519 → Özel anahtar
~/.ssh/id_ed25519.pub → Genel anahtar
| Dosya | İzin | Açıklama |
|---|---|---|
id_ed25519 | 600 | Özel anahtar – gizli tutulur |
id_ed25519.pub | 644 | Genel anahtar – sunucuya gönderilir |
☁️ 5. Genel Anahtarı Sunucuya Aktarma
En kolay yöntem ssh-copy-id komutudur:
ssh-copy-id kullanici@sunucu_ip
Bu komut:
~/.ssh dizinini oluşturur,
authorized_keys dosyasını ayarlar,
İzinleri doğru biçimde düzenler.
Artık giriş yapabilirsin:
ssh kullanici@sunucu_ip
🧭 Alternatif (Manuel Yöntem)
cat ~/.ssh/id_ed25519.pub
Sunucuda:
mkdir -p ~/.ssh && chmod 700 ~/.ssh
echo "ANAHTAR_METNI" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
🧱 6. Parolalı Girişi Kapatma (Güvenlik Adımı)
SSH yapılandırma dosyasını düzenle:
sudo nano /etc/ssh/sshd_config
Aşağıdaki satırları bul ve düzenle:
PasswordAuthentication no
PermitRootLogin no
Kaydet, çık ve SSH servisini yeniden başlat:
sudo systemctl restart ssh
⚠️ Uyarı: Anahtar girişin test edilmeden bu adımı uygulama, erişimi kaybedebilirsin.
🧰 7. SSH Agent ile Parola Kolaylığı
Anahtarına parola eklediysen, SSH Agent seni her girişte parola yazmaktan kurtarır.
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
Bu sayede aynı oturumda anahtarı bir kez doğrulaman yeterli olur.
📁 8. Çoklu Anahtar Yönetimi (config Dosyası)
Birden fazla sunucu kullanıyorsan ~/.ssh/config dosyasını oluştur:
touch ~/.ssh/config
nano ~/.ssh/config
Örnek:
# Rabisu Bulut
Host rabisu
HostName 203.0.113.42
User devadmin
IdentityFile ~/.ssh/id_ed25519_rabisu
# GitHub
Host github
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_github
Artık sadece:
ssh rabisu
yazarak bağlanabilirsin. 🚀
🧩 9. İzinleri Doğru Ayarlama
SSH izinleri hatalıysa bağlantı reddedilir. Doğru ayarları uygulamak için:
| Yol | Komut | Açıklama |
|---|---|---|
~/.ssh/ | chmod 700 ~/.ssh | Sadece sahibi erişebilir |
~/.ssh/authorized_keys | chmod 600 ~/.ssh/authorized_keys | Yalnızca sahibi okuyabilir/yazabilir |
~/.ssh/id_ed25519 | chmod 600 ~/.ssh/id_ed25519 | Özel anahtar koruma altında |
🧱 10. Sık Karşılaşılan Hatalar
| Sorun | Neden | Çözüm |
|---|---|---|
Permission denied (publickey) | Hatalı izinler | chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys |
Connection refused | SSH servisi durdurulmuş | sudo systemctl restart ssh |
user not in the sudoers file | Kullanıcı sudo grubunda değil | sudo usermod -aG sudo <kullanıcı> |
parse error near 'ALL' | Sudoers dosyası hatalı | sudo visudo -c ile kontrol et |
🧱 11. Gelişmiş Güvenlik Önerileri
Root girişi kapalı olmalı.
SSH portunu değiştir: /etc/ssh/sshd_config → Port 2222
Fail2Ban kur: sudo apt install fail2ban
Anahtar rotasyonu: Yılda en az bir kez anahtar değiştir.
Yedekleme: Özel anahtarı şifreli depoda sakla.
🧠 12. Sıkça Sorulan Sorular (SSS)
- SSH anahtar parolamı unuttum, ne yapmalıyım?
Yedek anahtar kullan veya web konsolu üzerinden yeni bir genel anahtar ekle.
- Neden RSA yerine Ed25519 öneriliyor?
Daha güvenli, daha kısa anahtar boyu, daha hızlı doğrulama.
- ssh-copy-id çalışmıyorsa ne yapmalıyım?
Anahtarı elle ekle:
mkdir -p ~/.ssh && chmod 700 ~/.ssh
echo "ANAHTAR" >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys
- Bağlantı hatası alıyorum, nereden başlamalıyım?
ssh -v kullanici@sunucu komutuyla hata detaylarını incele.
- Sunucuda SSH portu kapalıysa?
sudo ufw allow ssh ile portu aç.
✅ 13. Sonuç
Artık Ubuntu üzerinde parolasız, güvenli SSH erişimi kurdun 🎉 Bu yapılandırma:
Brute-force saldırılarını engeller,
Girişi hızlandırır,
Yönetimi kolaylaştırır.
🌩️ Ek güvenlik adımlarını Rabisu Bulut altyapında hemen uygulayabilir, SSH anahtar yönetimini otomatik hale getirebilirsin.