Takip et

SSH Nedir ve Neden Kullanılır?

SSH Nedir ve Neden Kullanılır? SSH (Secure Shell), uzak bir bilgisayar veya sunucu ile şifreli bir bağlantı kurmak için kullanılan bir

SSH Nedir ve Neden Kullanılır?

SSH (Secure Shell), uzak bir bilgisayar veya sunucu ile şifreli bir bağlantı kurmak için kullanılan bir ağ protokolüdür. Geleneksel, güvensiz protokollerin (örneğin Telnet, FTP) aksine, SSH tüm iletişimi şifreleyerek hassas verilerin (kullanıcı adları, parolalar, komutlar) ağ üzerinden güvenli bir şekilde aktarılmasını sağlar. Genellikle Linux ve Unix tabanlı sistemlere uzaktan erişim, dosya transferi ve komut çalıştırma için kullanılır.

SSH Nedir?

SSH, istemci-sunucu modeline dayalı çalışır. İstemci (sizin bilgisayarınız), sunucuda çalışan bir SSH servisine (genellikle 22 numaralı portta dinler) bağlanır. Bağlantı kurulduktan sonra, istemci ve sunucu arasında güvenli bir tünel oluşturulur. Bu tünel aracılığıyla gönderilen tüm veriler şifrelenir ve yetkisiz kişilerin verilere erişmesi engellenir.

Neden SSH Kullanmalıyız?

  • Güvenlik: Tüm iletişimi şifreleyerek veri güvenliğini sağlar. Man-in-the-middle saldırılarına karşı koruma sunar.
  • Uzaktan Yönetim: Sunucularınızı dünyanın her yerinden güvenli bir şekilde yönetmenizi ve komut çalıştırmanızı sağlar.
  • Dosya Transferi: SFTP (SSH File Transfer Protocol) veya SCP (Secure Copy Protocol) kullanarak dosyaları güvenli bir şekilde aktarabilirsiniz.
  • Port Yönlendirme (Tunneling): Güvenli olmayan ağ servislerini (örneğin veritabanı bağlantıları) SSH tüneli üzerinden güvenli hale getirebilirsiniz.
  • Esneklik: Parola tabanlı veya anahtar tabanlı kimlik doğrulama gibi farklı güvenlik yöntemleri sunar.

Başlamadan Önce Bilmeniz Gerekenler

Uzak sunucunuza SSH ile bağlanmadan önce bazı temel bilgilere ve araçlara ihtiyacınız olacak.

Gerekli Bilgiler

  • Sunucu IP Adresi veya Host Adı: Bağlanmak istediğiniz sunucunun genel IP adresi (örn. 192.168.1.100) veya etki alanı adı (örn. ornek.com). Bu bilgiyi genellikle sunucu sağlayıcınızdan alırsınız.
  • Kullanıcı Adı: Sunucuda oturum açmak için kullanacağınız kullanıcı adı (örn. root, ubuntu, admin).
  • Kimlik Doğrulama Yöntemi:
    • Parola: Sunucuya erişim için belirlenmiş parola.
    • SSH Anahtar Çifti: Daha güvenli olan bu yöntemde, özel bir anahtar (sadece sizde kalır) ve genel bir anahtar (sunucuya yüklenir) kullanılır.

SSH İstemcisi Kurulumu

Uzak sunucuya bağlanmak için kendi bilgisayarınızda bir SSH istemcisine ihtiyacınız var:

  • Linux ve macOS: Bu işletim sistemlerinde OpenSSH istemcisi genellikle varsayılan olarak yüklüdür. Terminali açarak doğrudan ssh komutunu kullanabilirsiniz.
  • Windows:
    • Windows 10 ve üzeri: Artık Windows’ta da yerleşik OpenSSH istemcisi bulunmaktadır. PowerShell veya Komut İstemi’ni açarak ssh komutunu kullanabilirsiniz. Kurulumu kontrol etmek için Komut İstemi’ne ssh yazıp Enter tuşuna basabilirsiniz. Eğer yüklü değilse, Ayarlar > Uygulamalar > İsteğe Bağlı Özellikler kısmından “OpenSSH İstemcisi”ni ekleyebilirsiniz.
    • PuTTY: Daha eski Windows sürümleri veya PuTTY’nin sunduğu ek özelliklerden faydalanmak isteyenler için popüler bir seçenektir. PuTTY’yi resmi web sitesinden (www.putty.org) indirebilirsiniz.
    • WSL (Windows Subsystem for Linux): Linux ortamını Windows içinde çalıştırmak isteyenler için harika bir seçenektir. WSL’i kurduktan sonra, tıpkı bir Linux dağıtımında olduğu gibi terminal üzerinden SSH kullanabilirsiniz.

SSH ile Sunucuya Bağlanma: Parola Doğrulama

Bu, SSH ile sunucuya bağlanmanın en temel yoludur. Güvenlik endişeleri nedeniyle anahtar tabanlı kimlik doğrulama kadar önerilmese de, hızlı bağlantılar veya ilk kurulumlar için kullanılabilir.

Temel Bağlantı Komutu (Linux/macOS/Windows OpenSSH)

Terminal veya PowerShell penceresini açın ve aşağıdaki komutu kullanın:

ssh kullanici_adi@sunucu_ip_adresi_veya_host_adi

Örnek:

ssh root@192.168.1.100

veya

ssh ubuntu@ornek.com

İlk kez bir sunucuya bağlandığınızda, SSH istemcisi sunucunun kimliğini doğrulamak için bir soru soracaktır. Şuna benzer bir mesaj göreceksiniz:

The authenticity of host '192.168.1.100 (192.168.1.100)' can't be established.
ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

Bu, sunucunun parmak izini onaylamanız istendiği anlamına gelir. Sunucu sağlayıcınızdan doğru parmak izini teyit ettiyseniz veya bu bir test sunucusuysa, yes yazıp Enter tuşuna basın. Bu işlem, sunucunun parmak izini ~/.ssh/known_hosts dosyanıza kaydedecektir, böylece bir sonraki bağlantınızda bu soru tekrar sorulmayacaktır.

Ardından, sizden parolanızı girmeniz istenecektir:

kullanici_adi@sunucu_ip_adresi_veya_host_adi's password:

Parolanızı dikkatlice girin (yazarken ekranda hiçbir şey görünmeyecektir) ve Enter tuşuna basın. Doğru parolayı girdiğinizde, sunucunun komut satırı arayüzüne (shell) erişim sağlayacaksınız.

Windows Kullanıcıları İçin (PuTTY)

  1. PuTTY uygulamasını açın.
  2. Host Name (or IP address) alanına sunucunuzun IP adresini veya host adını girin.
  3. Port alanında genellikle varsayılan 22 portu kalır.
  4. Connection type olarak SSH seçili olduğundan emin olun.
  5. İsteğe bağlı olarak, bu oturum ayarlarını kaydetmek için bir isim verip Save butonuna tıklayabilirsiniz.
  6. Open butonuna tıklayın.
  7. İlk bağlantıda, sunucunun parmak izini doğrulamanız istenecektir. Güvenli olduğundan eminseniz Accept butonuna tıklayın.
  8. Bir komut penceresi açılacak ve sizden login as: istenecektir. Kullanıcı adınızı girip Enter tuşuna basın.
  9. Ardından password: istenecektir. Parolanızı girip Enter tuşuna basın.
  10. Başarılı bir şekilde giriş yaptığınızda sunucunuzun komut satırına erişeceksiniz.

SSH Anahtar Çifti ile Bağlanma: Daha Güvenli Yöntem

SSH anahtar çifti ile kimlik doğrulama, parola tabanlı kimlik doğrulamadan çok daha güvenlidir. Bu yöntemde, bir özel anahtar (private key) ve bir genel anahtar (public key) kullanılır. Özel anahtarınız bilgisayarınızda gizli kalır, genel anahtar ise sunucuya yüklenir.

SSH Anahtar Çifti Nedir?

  • Özel Anahtar (Private Key): Sadece sizin erişebileceğiniz, gizli tutulması gereken bir dosyadır. Sunucuya kimliğinizi kanıtlamak için kullanılır. Genellikle bir parola (passphrase) ile korunur.
  • Genel Anahtar (Public Key): Özel anahtarınızdan türetilen ve sunucuya güvenli bir şekilde yüklenebilen bir dosyadır. Bu anahtar, özel anahtarınızın sunucu tarafından doğrulanmasını sağlar.

SSH Anahtar Çifti Oluşturma (Linux/macOS/Windows OpenSSH)

Terminal veya PowerShell’i açın ve aşağıdaki komutu çalıştırın:

ssh-keygen -t rsa -b 4096
  • -t rsa: RSA algoritması kullanarak anahtar oluşturulacağını belirtir. (Günümüzde ed25519 daha modern ve güvenli bir alternatif olarak kabul edilir, ancak RSA hala yaygın olarak kullanılır.)
  • -b 4096: Anahtarın bit uzunluğunu belirler. 4096 bit, günümüz standartlarında oldukça güvenli kabul edilir.

Komutu çalıştırdıktan sonra size birkaç soru sorulacaktır:

Generating public/private rsa key pair.
Enter file in which to save the key (/home/kullanici/.ssh/id_rsa): 

Varsayılan konumu (~/.ssh/id_rsa) onaylamak için Enter tuşuna basabilirsiniz. Eğer farklı bir isim vermek isterseniz, buraya yazabilirsiniz.

Enter passphrase (empty for no passphrase): 
Enter same passphrase again:

Önemli: Anahtarınız için güçlü bir parola (passphrase) belirlemeniz şiddetle tavsiye edilir. Bu, özel anahtarınız ele geçirilse bile yetkisiz erişimi engeller. Parolayı girerken ekranda hiçbir şey görünmez. Parola istemiyorsanız boş bırakıp Enter tuşuna basabilirsiniz (ancak bu tavsiye edilmez).

Anahtar çifti başarıyla oluşturulduğunda, ~/.ssh/id_rsa (özel anahtar) ve ~/.ssh/id_rsa.pub (genel anahtar) dosyaları oluşturulacaktır.

Genel Anahtarı Sunucuya Kopyalama

Oluşturduğunuz genel anahtarı sunucuya kopyalamanız gerekmektedir. Bunun en kolay yolu ssh-copy-id komutudur:

ssh-copy-id kullanici_adi@sunucu_ip_adresi_veya_host_adi

Örnek:

ssh-copy-id root@192.168.1.100

Bu komut, sunucuya ilk kez bağlanırken sizden parolanızı isteyecek ve genel anahtarınızı sunucudaki ~/.ssh/authorized_keys dosyasına ekleyecektir. Eğer bu komut yüklü değilse veya kullanmak istemiyorsanız, manuel olarak da kopyalayabilirsiniz:

cat ~/.ssh/id_rsa.pub | ssh kullanici_adi@sunucu_ip_adresi_veya_host_adi "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

Bu komut, yerel genel anahtarınızı okur ve onu uzak sunucudaki ~/.ssh/authorized_keys dosyasına ekler. Ayrıca, güvenlik için .ssh dizini ve authorized_keys dosyasının izinlerini doğru şekilde ayarlar.

PuTTY ile Anahtar Oluşturma ve Kopyalama:
PuTTYgen aracını kullanarak SSH anahtar çifti oluşturabilirsiniz. Özel anahtarı .ppk formatında kaydedip PuTTY’de Connection > SSH > Auth altındaki “Private key file for authentication” bölümünden seçmeniz gerekir. Genel anahtarı ise PuTTYgen’de gösterilen metin kutusundan kopyalayıp sunucudaki ~/.ssh/authorized_keys dosyasına manuel olarak eklemeniz gerekir.

Anahtarla Bağlanma

Genel anahtarınızı sunucuya kopyaladıktan sonra, artık parolasız (eğer anahtara passphrase koymadıysanız) veya passphrase ile bağlanabilirsiniz:

ssh kullanici_adi@sunucu_ip_adresi_veya_host_adi

Eğer anahtarınızı varsayılan konumdan (~/.ssh/id_rsa) farklı bir yere kaydettiyseniz, -i parametresini kullanarak belirtmeniz gerekir:

ssh -i /yol/to/ozel_anahtar kullanici_adi@sunucu_ip_adresi_veya_host_adi

Eğer anahtarınız için bir parola belirlediyseniz, sizden bu parolayı girmeniz istenecektir.

Gelişmiş SSH Kullanımı ve Faydalı İpuçları

SSH, sadece basit bağlantı kurmaktan çok daha fazlasını yapabilir. İşte bazı gelişmiş kullanımlar ve pratik ipuçları:

SSH Yapılandırma Dosyası (~/.ssh/config)

SSH yapılandırma dosyası, sık kullandığınız sunucular için takma adlar (alias) oluşturmanıza ve bağlantı ayarlarını önceden tanımlamanıza olanak tanır. Bu, komutları daha kısa ve okunabilir hale getirir.

Dosyayı oluşturun veya düzenleyin: nano ~/.ssh/config

Örnek içerik:

Host myserver
    HostName 192.168.1.100
    User ubuntu
    Port 22
    IdentityFile ~/.ssh/id_rsa_myserver

Host webserver
    HostName ornek.com
    User admin
    Port 2222
    IdentityFile ~/.ssh/id_rsa_webserver

Artık ssh myserver veya ssh webserver yazarak bağlanabilirsiniz.

Port Yönlendirme (Port Forwarding)

SSH tünelleme olarak da bilinen port yönlendirme, ağ trafiğini SSH bağlantısı üzerinden güvenli bir şekilde iletmek için kullanılır.

  • Yerel Port Yönlendirme (Local Port Forwarding): Uzak sunucudaki bir servise yerel makineniz üzerinden erişmenizi sağlar.
    ssh -L 8080:localhost:80 kullanici@sunucu_ip_adresi

    Bu komut, yerel makinenizin 8080 portuna gelen trafiği, uzak sunucunun 80 portuna (kendi localhost’u üzerinden) yönlendirir. Böylece yerel tarayıcınızdan http://localhost:8080 adresine giderek uzak sunucudaki web sitesine erişebilirsiniz.

  • Uzak Port Yönlendirme (Remote Port Forwarding): Uzak sunucudaki bir portun, yerel makinenizdeki bir servise erişmesini sağlar. Daha az yaygın kullanılır.
    ssh -R 8080:localhost:80 kullanici@sunucu_ip_adresi

    Bu, uzak sunucunun 8080 portuna gelen trafiği, sizin yerel makinenizin 80 portuna yönlendirir.

SFTP ile Dosya Transferi

SFTP (SSH File Transfer Protocol), SSH bağlantısı üzerinden güvenli dosya transferi sağlar. sftp komutunu kullanarak etkileşimli bir dosya transfer oturumu başlatabilirsiniz:

sftp kullanici_adi@sunucu_ip_adresi

Bağlandıktan sonra ls, put dosya.txt (yerelden sunucuya), get dosya.txt (sunucudan yerel’e) gibi komutları kullanabilirsiniz.

Grafiksel arayüz için FileZilla (SFTP desteğiyle) veya WinSCP (Windows için) gibi programları kullanabilirsiniz.

SSH Ajanı Kullanımı (ssh-agent)

Birden fazla SSH anahtarınız varsa ve her bağlantıda anahtarınızın parolasını girmek istemiyorsanız, ssh-agent kullanabilirsiniz. Bu, anahtarlarınızı bellekte depolar ve bir kez parola girdikten sonra oturumunuz boyunca tekrar sormaz.

eval "$(ssh-agent -s)"  # ssh-agent'ı başlat
ssh-add ~/.ssh/id_rsa    # Anahtarınızı ajana ekleyin (parolasını bir kez girmeniz yeterli)

Güvenlik İpuçları

  • Güçlü Parolalar ve Anahtar Parolaları: Hem sunucu parolaları hem de SSH anahtar parolaları için karmaşık ve uzun parolalar kullanın.
  • Parola Doğrulamayı Devre Dışı Bırakın: Anahtar tabanlı kimlik doğrulama kurduktan sonra, sunucunuzdaki /etc/ssh/sshd_config dosyasında PasswordAuthentication no yaparak parola ile girişi devre dışı bırakın. Bu, kaba kuvvet saldırılarını büyük ölçüde engeller.
  • Varsayılan Portu Değiştirin: SSH servisi varsayılan olarak 22 numaralı portu kullanır. /etc/ssh/sshd_config dosyasında Port 2222 (veya başka bir port) gibi bir ayar yaparak varsayılan portu değiştirebilirsiniz. Bu, otomatik bot taramalarını azaltır (ancak güvenlik sağlamaz, sadece görünürlüğü azaltır).
  • Firewall Kullanın: Sunucunuzda sadece gerekli portlara (örn. SSH için yeni portunuz) izin veren bir güvenlik duvarı (örn. UFW veya firewalld) yapılandırın.
  • Kök (Root) Erişimini Sınırlayın: Mümkünse doğrudan root kullanıcısı ile SSH bağlantısı kurmaktan kaçının. Bunun yerine, sudo yetkilerine sahip normal bir kullanıcı oluşturun ve su – veya sudo -i komutlarıyla root yetkilerine geçiş yapın.

Sonuç ve Sıkça Sorulan Sorular

SSH, uzak sunucularla güvenli ve verimli bir şekilde etkileşim kurmak için vazgeçilmez bir araçtır. Bu rehberde, SSH’nin temel prensiplerinden, parola ve anahtar tabanlı bağlantı yöntemlerine, gelişmiş özelliklerine ve güvenlik ipuçlarına kadar geniş bir yelpazeyi ele aldık. SSH’yi doğru bir şekilde kullanarak, sunucularınızın yönetimini basitleştirebilir ve güvenliğini önemli ölçüde artırabilirsiniz.

Sıkça Sorulan Sorular (SSS)

“Connection refused” hatası alıyorum, ne yapmalıyım?

Bu hata genellikle şu nedenlerden kaynaklanır:

  • SSH servisi çalışmıyor: Sunucuda SSH servisi (sshd) çalışmıyor olabilir. Sunucunuza fiziksel veya konsol erişiminiz varsa, sudo systemctl status sshd komutuyla kontrol edin ve gerekirse sudo systemctl start sshd ile başlatın.
  • Firewall engelliyor: Sunucunuzun güvenlik duvarı (firewall), SSH portuna (varsayılan 22) gelen bağlantıları engelliyor olabilir. Firewall ayarlarınızı kontrol edin ve SSH portuna izin verin.
  • Yanlış IP adresi/Port: Sunucunun IP adresini veya SSH portunu yanlış girmiş olabilirsiniz.

“Permission denied (publickey, password)” hatası alıyorum?

Bu hata, kimlik doğrulamanızın başarısız olduğunu gösterir:

  • Yanlış parola: Parola ile bağlanmaya çalışıyorsanız, parolanızı yanlış girmişsinizdir.
  • Yanlış kullanıcı adı: Belirttiğiniz kullanıcı adı sunucuda mevcut olmayabilir veya yanlış yazılmıştır.
  • SSH anahtarı sorunları:
    • Genel anahtarınız ~/.ssh/authorized_keys dosyasına doğru şekilde eklenmemiş olabilir.
    • Özel anahtarınızın izinleri yanlış olabilir (Linux/macOS’ta chmod 600 ~/.ssh/id_rsa olmalı).
    • Anahtarınız için bir parola belirlediyseniz ve onu yanlış girmişseniz.
    • Yanlış özel anahtarı kullanmaya çalışıyorsunuzdur (-i parametresiyle doğru anahtarı belirttiğinizden emin olun).

Varsayılan SSH portunu değiştirmek güvenliğimi artırır mı?

Kısmen evet. Varsayılan 22 portunu değiştirmek, otomatik botların ve kaba kuvvet saldırılarının sayısını azaltır çünkü çoğu bot varsayılan portu tarar. Ancak bu “security through obscurity” (gizleyerek güvenlik) yöntemidir ve gerçek bir güvenlik katmanı sağlamaz. Saldırganlar port taraması yaparak yeni portunuzu bulabilirler. Yine de iyi bir uygulamadır, ancak güçlü parolalar/anahtarlar ve güvenlik duvarı kuralları gibi diğer güvenlik önlemleriyle birleştirilmelidir.

SSH anahtarlarımı nasıl yedeklerim?

SSH anahtarlarınızın bulunduğu ~/.ssh dizinini güvenli bir yere (örneğin şifreli bir USB sürücüye veya güvenli bulut depolamaya) kopyalayarak yedekleyebilirsiniz. Özel anahtarınızın (örn. id_rsa) güvenliğine özellikle dikkat edin ve asla yetkisiz kişilerle paylaşmayın. Eğer anahtarınız bir parola ile korunuyorsa, bu parolayı da unutmamalısınız.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.