Teknoloji ipuçlarını kendin uygula
İçerik
Son yazılar
Biz kimiz
Ağ, bulut ve sistem yönetimi konularında pratik rehberler. Adım adım açıklamalar ve gerçek sorunlara çözümler sunuyoruz.

SSH ile Uzaktan Sunucu Bağlantısı

İlk kez bir uzak sunucuya bağlanmam gerektiğinde parola yazmaktan bıkmıştım. Her git push, her yeniden başlatma, her log kontrolü… Sonunda anahtar tabanlı kimlik doğrulamayı öğrendim ve o gün bugün parola girmedim. Aşağıda kendi kurulum sırama sadık kalarak, SSH bağlantı kurma sürecini baştan sona anlatıyorum. Bulut tarafında henüz bir makinen yoksa AWS ücretsiz katmanında ilk sunucunu ayağa kaldırmayı anlattığım yazıyla başlamak iyi olur; buraya bir IP adresiyle gelmen yeterli.

SSH tam olarak ne yapıyor?

SSH, senin bilgisayarınla uzak makine arasında şifreli bir tünel açar ve o tünelin içinden komut satırı çalıştırmanı sağlar. Parolayla da bağlanabilirsin ama anahtar çifti kullanmanın iki avantajı var: parola tahmin saldırıları işe yaramaz ve otomasyon (yedekleme scriptleri, dağıtım araçları) senden şifre istemeden çalışır. Dosya yedeklemesini otomatikleştirdiğim düzenekte de temel taş bu.

Adım adım kurulum

  1. Elimdeki istemciyi kontrol ediyorum. Windows 10/11, macOS ve Linux'ta OpenSSH hazır geliyor. Terminali açıp ssh -V yazıyorum; sürüm bilgisi görünüyorsa yolumuza devam.
  2. Anahtar çiftini üretiyorum. ssh-keygen -t ed25519 -C "laptop-2024" komutunu çalıştırıyorum. Ed25519 hem kısa hem hızlı; eski bir sunucu ed25519 desteklemiyorsa -t rsa -b 4096 kullanıyorum. Dosya yolu sorusuna Enter'a basıp varsayılanı kabul ediyorum. Passphrase sorulduğunda mutlaka bir cümle giriyorum — laptopum çalınırsa anahtar tek başına işe yaramasın diye.
  3. İki dosyanın ne olduğunu ayırt ediyorum. ~/.ssh/id_ed25519 özel anahtar, kimseye vermiyorum. ~/.ssh/id_ed25519.pub açık anahtar, sunucuya kopyalanacak olan bu.
  4. Açık anahtarı sunucuya taşıyorum. En kolayı: ssh-copy-id kullanici@11.22.33.44. Bu komut ilk seferde parolamı sorar, sonra anahtarı uzak taraftaki ~/.ssh/authorized_keys dosyasına ekler. Windows'ta ssh-copy-id yoksa .pub dosyasının içeriğini kopyalayıp sunucuda o dosyaya elle yapıştırıyorum.
  5. Anahtarla bağlanıp deniyorum. ssh kullanici@11.22.33.44. Parola sorulmadan (ya da sadece passphrase sorularak) içeri girdiysem iş tamam. Girmediyse sunucuda ls -ld ~/.ssh ile izinlere bakıyorum: .ssh dizini 700, authorized_keys 600 olmalı. Bu konu Linux dosya izinleri ve sahipliği yazısında ayrıntılı; SSH bu kurala çok katıdır.
  6. Bağlantıyı kısaltıyorum. Yerel makinede ~/.ssh/config dosyası açıp şunu yazıyorum:
    • Host web
    • HostName 11.22.33.44
    • User kullanici
    • Port 22
    • IdentityFile ~/.ssh/id_ed25519
    Artık ssh web yazmam yeterli. scp dosya web:/tmp/ de aynı kısayolu kullanıyor.
  7. Parola girişini kapatıyorum. Anahtarla girdiğimden emin olduktan sonra sunucuda /etc/ssh/sshd_config dosyasında şu satırları düzenliyorum: PasswordAuthentication no, PermitRootLogin no, PubkeyAuthentication yes. Sonra sudo sshd -t ile sözdizimini doğrulayıp sudo systemctl reload sshd diyorum. Mevcut oturumu kapatmadan ikinci bir terminalden bağlanıp test ediyorum — kendini dışarıda bırakma riskini böyle sıfırlıyorum.
  8. Passphrase'i tekrar tekrar yazmamak için ajan kullanıyorum. eval "$(ssh-agent -s)" ve ssh-add ~/.ssh/id_ed25519. macOS'ta ssh-add --apple-use-keychain ile kalıcı hale geliyor.

İşi kolaylaştıran birkaç ekstra

Sık yapılan hatalar