SSH (Secure Shell), ağ üzerinden uzak sistemlere erişim sağlamak ve bu sistemleri yönetmek için kullanılan bir kriptoğrafik ağ protokolüdür. Şifreli iletişim sağlayarak verilerin gizliliğini ve bütünlüğünü korur. SSH, uzak bağlantılar, komut çalıştırma, dosya transferi ve daha birçok işlem için güvenli bir alternatif sunar.

Bu rehberde, SSH‘nin nasıl çalıştığını, kullanım alanlarını, yaygın komutları ve ağ güvenliğindeki rolünü ayrıntılı bir şekilde inceleyeceğiz.


SSH Nasıl Çalışır?

SSH, istemci-sunucu modeline dayanarak çalışır ve üç katmanlı bir protokol yapısına sahiptir: Taşıma Katmanı (Transport Layer), Kullanıcı Kimlik Doğrulama Katmanı (User Authentication Layer) ve Bağlantı Katmanı (Connection Layer).

1. Bağlantı Kurulumu

İstemci, SSH sunucusuna bağlantı başlatır. Genellikle port 22 (veya özelleştirilmiş başka bir port) kullanılır. İlk bağlantı kurulduğunda, sunucunun genel anahtar parmak izi istemciye gösterilir ve bu doğrultuda bağlantının güvenliği onaylanır.

2. Taşıma Katmanı (Transport Layer)

Bu katmanda, istemci ve sunucu, kullanılacak şifreleme algoritmalarını, anahtar değişim yöntemlerini ve bütünlük kontrol mekanizmalarını müzakere eder. Sonrasında, her iki taraf, paylaşılan bir oturum anahtarı oluşturur ve verilerin güvenli bir şekilde şifrelenmesi sağlanır.

3. Kullanıcı Kimlik Doğrulama Katmanı (User Authentication Layer)

Bağlantı güvenli hale geldikten sonra, istemci sunucuya kimlik doğrulama işlemi yapar. Kimlik doğrulama, genellikle şifre doğrulama veya anahtar tabanlı kimlik doğrulama (public key authentication) ile gerçekleştirilir. Public key authentication ile istemci, özel anahtar (private key) kullanarak bir mesajı imzalar ve sunucu bu imzayı doğrulamak için istemcinin genel anahtarını kullanır.

4. Bağlantı Katmanı (Connection Layer)

Kimlik doğrulama başarılı olduktan sonra, istemci ve sunucu arasında güvenli bir etkileşimli oturum başlatılır. Bu katman, farklı kanalların (shell, exec, SFTP, SCP gibi) aynı bağlantı üzerinde güvenli bir şekilde iletilmesini sağlar.


SSH Komutları ve Kullanımı

SSH, kullanıcıların uzaktaki sistemlere güvenli bir şekilde erişim sağlamak için çeşitli komutlar sunar. İşte en yaygın kullanılan SSH komutları:

1. Temel SSH Bağlantı Komutu

Uzak bir sunucuya bağlanmak için aşağıdaki komut kullanılır:

Bash
ssh UserName@SSHserver.example.com

Bu komut, UserName kullanıcısı ile SSHserver.example.com sunucusuna bağlanmayı sağlar. İlk bağlantı olduğunda, sunucunun genel anahtar parmak izi istemciye gösterilir ve kullanıcıdan onay alınır.

2. SSH Sunucu Komutları

  • sshd: SSH sunucusunu başlatır ve gelen bağlantıları kabul eder.
  • ssh-keygen: Yeni bir SSH anahtar çifti oluşturur.
  • ssh-copy-id: SSH public key’i uzak bir sunucuya kopyalar ve şifresiz giriş sağlar.
  • ssh-agent: Anahtarları yöneten ve şifreleri saklayan bir yardımcı programdır.
  • scp: Dosya transferi için kullanılan güvenli bir SSH komutudur.
  • sftp: SSH üzerinden dosya transferi sağlayan bir protokoldür.

3. Dizine Geçiş ve Durum Görüntüleme Komutları

  • cd: Uzak sunucuda dizin değiştirir.
  • pwd: Uzak sunucudaki mevcut dizini gösterir.

SSH Tünelleme ve Port Yönlendirme

SSH Tünelleme (ya da SSH Port Forwarding), bir yerel sistem ile uzak bir sistem arasında güvenli bir tünel oluşturma tekniğidir. SSH port yönlendirmesi, ağ trafiğini belirli portlara yönlendirme işlemi yaparak, uzak hizmetlere güvenli erişim sağlar.

SSH Port Forwarding Türleri

  1. Yerel Port Yönlendirme (Local Port Forwarding): İstemci tarafında çalışan uygulamaların, SSH sunucusu üzerinden güvenli bir şekilde uzak hizmetlere erişmesini sağlar.
  2. Uzak Port Yönlendirme (Remote Port Forwarding): Uzak sunuculardan, yerel istemciye hizmetlere güvenli erişim sağlar.
  3. Dinamik Port Yönlendirme (Dynamic Port Forwarding): Birden fazla uygulamanın trafiğini tek bir SSH bağlantısı üzerinden güvenli bir şekilde yönlendirme imkanı sunar.

SSH tünelleme, VPN benzeri bir işlev sunarak, güvenli ağ iletişimi sağlar ve genellikle güvenlik duvarlarını aşmak için kullanılır.


SSH’nin Kullanım Alanları

SSH, güvenli bağlantılar ve uzaktan yönetim için yaygın olarak kullanılır. İşte bazı popüler SSH kullanım alanları:

1. Güvenli Uzaktan Kabuk Erişimi (Remote Shell Access)

SSH, kullanıcıların uzak sistemlere güvenli bir şekilde bağlanmalarını ve yönetimsel işlemleri komut satırında gerçekleştirmelerini sağlar. Bu, eski ve güvensiz protokoller olan Telnet ve Rlogin‘in yerini almıştır.

2. Güvenli Dosya Transferi (Secure File Transfer)

SSH, SCP (Secure Copy) ve SFTP (SSH File Transfer Protocol) gibi güvenli dosya transfer protokollerini destekler. Bu protokoller, dosyaların şifreli bir şekilde transfer edilmesini sağlar.

3. Uzak Komut Çalıştırma (Remote Command Execution)

SSH, uzak sistemlerde komutlar çalıştırmaya olanak tanır. Kullanıcılar, tam bir etkileşimli oturum açmadan sadece bir komut çalıştırabilirler.

4. Port Yönlendirme ve Tünelleme (Port Forwarding and Tunneling)

SSH, ağ üzerindeki diğer servisleri güvenli bir şekilde erişmek için port yönlendirme ve tünelleme sağlar.

5. X11 Yönlendirmesi (X11 Forwarding)

SSH, uzak bir sunucuda çalışan grafiksel uygulamaları yerel bir istemcide güvenli bir şekilde çalıştırmak için X11 Forwarding desteği sunar.


SSH Anahtar Yönetimi ve Kimlik Doğrulama

SSH’nin güçlü yönlerinden biri, public key authentication (anahtar tabanlı kimlik doğrulama) kullanarak şifresiz giriş yapılabilmesidir. Bu yöntem, özellikle birden fazla sunucuyu yöneten sistem yöneticileri için güvenliği artırır.

SSH Anahtar Yönetim Araçları

  • ssh-keygen: Yeni bir SSH anahtar çifti oluşturur.
  • ssh-copy-id: SSH public key’i uzak bir sunucuya kopyalar.
  • ssh-agent ve ssh-add: SSH anahtarlarını yönetir ve şifresiz giriş sağlar.

SSH anahtarları ile şifre yerine özel anahtar kullanılması, brute-force saldırılarının önüne geçer ve bağlantıları daha güvenli hale getirir.


SSH ve Güvenlik

SSH, ağ güvenliğinin sağlanmasında kritik bir rol oynar. Şifreli iletişim sağlayarak eavesdropping (dinleme), data tampering (veri değişikliği) ve man-in-the-middle attacks (araya girme saldırıları) gibi tehditlerden korunma sağlar. Ayrıca, SSH, güçlü kimlik doğrulama yöntemleri sunar ve sistem yöneticilerinin uzak sistemleri güvenli bir şekilde yönetmesine olanak tanır.