Günümüzde birden fazla sunucu yöneten sistem yöneticilerinin ya da geliştiricilerin günlük rutini haline gelen şeylerden biri SSH bağlantısı. Her gün aynı sunuculara defalarca bağlanmak terminalde şifre yazmak, yazarken yazdığını görememek ve bazen en ufak bir yazım hatası yüzünden başarısız oturumlarla vakit kaybetmek…
Ben de uzun süre bu süreci klasik yöntemlerle yürüttüm. Ancak zamanla sistem sayısı arttıkça her seferinde parola girmek hem verimi düşürdü hem de ciddi bir güvenlik riski doğurdu. Özellikle de paylaşımlı oturumlar, parola kayıt hataları, brute-force saldırı denemeleri gibi faktörler iyiden iyiye can sıkmaya başladı.
Çözüm mü? Anahtar tabanlı, yani şifresiz SSH bağlantısı.
Hızlı, güvenli, otomatikleştirilebilir ve oldukça profesyonel.
Bu makalemde Ubuntu Server 22.04 yüklü sunucunuza nasıl şifresiz SSH bağlantısı kurabileceğinizi Windows ortamında bunu nasıl yapılandırabileceğinizi sık yapılan hataları ve kendi deneyimlerimden çıkardığım bazı kritik noktaları adım adım aktaracağım.
Anahtar Tabanlı SSH Nedir ve Neden Kullanılır?
Geleneksel SSH bağlantısı şu şekildedir.
ssh kullanici@sunucu_ip → Parola sorar → Doğrulama → Oturum açılır
Ama her defasında parola girmek güvenli mi? Hayır.
Karmaşık parola kullanmak zorunda mıyız? Evet.
Ama hatırlaması kolay mı? Genellikle hayır.
Peki daha iyisi var mı? Kesinlikle!
Anahtar tabanlı doğrulama, SSH bağlantısında şu şekilde çalışır:
- Siz bilgisayarınızda bir anahtar çifti oluşturursunuz.
- Genel anahtar sunucuya yüklenir.
- Özel anahtar sadece sizde kalır.
- Bağlantı sırasında özel anahtarınız, genel anahtar ile eşleşirse erişim sağlanır.
Güvenlik Avantajları:
- Sunucuya şifre gönderilmez.
- Parola brute-force saldırılarına karşı dirençlidir.
- Her bağlantı şifrelidir ve doğrulaması oldukça güçlüdür.
- İsteğe bağlı olarak özel anahtarınıza bir parola (passphrase) da eklenebilir.
Anahtar tabanlı bağlantıyı otomatize edilmiş işlemlerde (örneğin cron job’lar, yedekleme senaryoları veya Ansible playbook’ları) kullanmak neredeyse zorunluluk. Özellikle yüzlerce sunucu yöneten sistemciler için tek alternatif diyebilirim.
Adım 1: Ubuntu 22.04’te OpenSSH Kurulumu
1.1 Gerekli Paketlerin kurulması.
sudo apt update && sudo apt install openssh-server
Bu komut ile SSH sunucusunu kurar. Kurulum sırasında OpenSSH servisi otomatik olarak başlar.
1.2 Servis Durumunu Kontrol Ediniz
sudo systemctl status ssh
Komut çıktısında active (running) ifadesini gördüyseniz her şey yolunda.
1.3 SSH Servisini Sistem Açılışında Otomatik Başlatın
sudo systemctl enable ssh
Bunu yapmayı unutan çok kişi tanıdım. Sunucu yeniden başlatıldığında SSH gelmediğinde fiziksel erişimle uğraşmak zorunda kalırsınız.
1.4 (Varsa) UFW Güvenlik Duvarını Ayarlayın
sudo ufw allow ssh
sudo ufw enable
Eğer özel bir port kullanıyorsanız (sshd_config dosyasından değiştirilmişse) o portu da açmayı unutmayın.
sudo ufw allow 2222/tcp
🛠️ Adım 2: Windows Üzerinde SSH Anahtarı Oluşturmak (PuTTYgen)
Windows ortamında, OpenSSH’nin id_rsa dosyalarını kullanmak yerine .ppk formatı gerekir. Bu nedenle PuTTYgen ile anahtar çifti oluşturacağız.
2.1 PuTTY ve PuTTYgen İndir
Yalnızca PuTTY değil, puttygen.exe ve pageant.exe gibi diğer yardımcı araçlar da gelir.
2.2 RSA Anahtar Üretimi
- PuTTYgen’i çalıştırın.
- RSA seçin (2048 veya tercihen 4096 bit).
- “Generate” butonuna tıklayın.
- Fare hareketleriyle rastgelelik üretin.
2.3 Özel Anahtarınızı Parola ile Korumak
- “Key passphrase” ve “Confirm passphrase” alanlarını doldurun.
- Bu, özel anahtar dosyanızın şifreli kalmasını sağlar.
Eğer bu anahtarı otomatik işlemlerde kullanacaksanız passphrase koymamak da tercih edilebilir ama bu durumda dosyayı çok iyi korumanız gerekir.
2.4 Anahtarları Kaydedin
- Public Key:
.pubolarak - Private Key:
.ppkolarak
Ayrıca “Public key for pasting into OpenSSH authorized_keys file” kısmındaki metni de kopyalayın.
Adım 3: Genel Anahtarı Ubuntu Sunucusuna Eklemek
3.1 Sunucuya İlk Kez Parola ile Bağlanın
ssh kullanici@sunucu_ip
3.2 .ssh Dizini ve authorized_keys Dosyasını Oluşturun
mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys
Yukarıda kopyaladığınız genel anahtar metnini bu dosyaya yapıştırın.
Son olarak:
chmod 600 ~/.ssh/authorized_keys
SSH bu izinleri sıkı kontrol eder. Aksi takdirde bağlantıyı reddeder.
3.3 Bağlantı Testine Hazırsınız
Çıkış yapın:
exit
Adım 4: PuTTY ile Şifresiz Bağlantı Kurmak
- PuTTY’yi açın.
- “Host Name” alanına
kullanici@sunucu_ipyazın. - Sol menüde
Connection > SSH > Authyolunu izleyin. - “Private key file for authentication” kısmında
.ppkdosyanızı seçin. - Ana menüye dönüp “Open” diyerek bağlantıyı başlatın.
Eğer özel anahtarınıza passphrase koyduysanız, sizden yalnızca bu parola istenir.
100’den fazla Ubuntu sunucuda Ansible playbook’ları çalıştırırken her makineye parola girmek imkânsız olurdu. Bu yöntemle tek bir komutla hepsine otomatik erişim sağladım.
Uzaktaki bir dosyayı rsync veya scp ile almak için parola girmeye gerek kalmadan cron job çalıştırabildim.
Sık değişen parolalar nedeniyle bağlantı sorunu yaşayan müşterilerde, kalıcı bir çözüm olarak anahtar tabanlı sisteme geçiş önerdim. Hatalar neredeyse sıfıra indi.