Ana sayfa » SSH Bağlantısı Nedir ve Nasıl Kullanılır ?
Protokoller

SSH Bağlantısı Nedir ve Nasıl Kullanılır ?

ssh nedir

SSH Nedir ?

Günümüzde iki bilgisayar arasında uzaktan erişim kurmak için birçok ağ protokölü bulunmaktadır. Bu ağ protokolleri sayesinde bilgisayarlar uzaktan haberleşebilir ve birbirleri arasında bilgi alışverişinde bulunabilirler. İsterseniz bu uzaktan haberleşme işlemini kriptografik bir hale getiren ve günümüzde bir hayli kullanılan SSH protokolüne bir göz atalım.

SSH, uzak bir makinede oturum açma ve o makinede belirli komutları çalıştırmak için kullanılır. Mesela Eskişehir’de oturduğunuzu ve bir websitenizin olduğunu varsayalım. Bu websiteniz de İstanbul’da herhangi bir serverda barındırılıyor olsun. İşte Eskişehir’den yani oturduğunuz yerden İstanbul’da bulunan bu servera SSH ağ protokolü sayesinde erişebilir ve eriştiğiniz serverda belirli yetki kısıtlamaları dahilinde istediğiniz değişikliği yapabilirsiniz. Bir nevi Telnet ile bir bilgisayarın kabuğuna erişmeye benziyor fakat SSH, Telnet’ten farklı olarak açık anahtarlı şifrelemeyi kullanır. Bu açık anahtarlı şifreleme sayesinde Telnet, Berkeley rsh ve rexec benzeri ağ protoköllerinden daha güvenilirdir.

Teknik Açıdan SSH Bağlantısı Nedir?

SSH bağlantısını teknik açıdan inceleyecek olursak, bu ağ protokolü TCP portları üzerinden taşınır ve X11 bağlantısı sağlar. Ayrıca 22 nolu port SSH bağlantısı için ayrılmıştır. Bu protokolümüz dosya gönderme işlemlerini SSH dosya transfer protokolü olan SFTP ya da güvenli kopyalama protokolü olan SCP ile yapar.

SSH baglantisi
SSH Bağlantısını temsil eden bir görsel

SSH bağlantısı GNU/Linux ve MAC OS X işletim sistemlerinde ön tanımlı olarak gelir. Windows işletim sistemlerinde ise bazı yazılımları yüklemeniz gerekmektedir. Örnek verecek olursak Putty uygulaması bunların içinde en çok kullanılanlardan bir tanesidir.

Açık Anahtarlı Şifreleme Nedir?

SSH bağlantı protokolünün temelini oluşturan açık anahtarlı şifreleme, şifre ve deşifre işlemlerini yapmak için iki farklı anahtarın kullanıldığı bir şifreleme çeşididir. Bu iki farklı anahtarlardan biri açık anahtar (public key) diğeri ise gizli anahtar (private key) olarak adlandırılır. Bu iki anahtarın tanımı ise aşağıdaki gibidir.

Açık anahtar: Bu anahtar kişinin şifreli iletişim kuracağı bilgisayarlara gönderilir ve herkes tarafından erişilebilir.

Gizli anahtar: Bu anahtar ise sadece kişiye özeldir ve asla başka bilgisayarlara gönderilmemelidir. Gizli anahtar kullanılarak açık anahtar ile şifrelenmiş metinler açılıp okunabilir. Açık anahtar ile gizli anahtar arasında matematiksel bir ilişki vardır.

Genel olarak açık anahtarlı şifreleme, SSH bağlantılarında 2 farklı amaçla kullanılır. Bunlar;

  1. Kimlik doğrulama işlemini gerçekleştirmek için (Sunucuya bağlanmak için parola sorulmaz)
  2. İstemci ve sunucu arasındaki internet trafiğini şifrelemek için (Sunucuya bağlanmak için parolayı bilmek gerekir)

Şimdi bu yaptığımız tanımları açıklaması açısından Ahmet adındaki bir ağ yöneticisinin bir servera ssh ile bağlanmasını konu edinen 2 farklı senaryoyu dikkatle inceleyelim.

Senaryo 1 (İnternet Trafiğinin Şifrelendiği Örnek)

Ahmet, çalıştığı şirketteki mesaisini bitirir ve evin yolunu tutar. Yorucu bir trafikten sonra evine gelir ve dinlenmeye başlar. Tam Ohh be! diyeceği zaman telefonu çalar. Arayan patronudur. Telefonu istemeyerek açar ve patronundan “Acil olarak 24 numaralı serverın wordpress yazılımını güncelle” şeklinde bir emir alır. İşte tam burada Ahmet homurdanarak bilgisayarını açar ve servera bağlanmak için aşağıdaki kodu yazar.

ssh <kullanici_adi>@<server_ip> veya ssh <kullanici_adi>@<server_dns>

 

ssh-kullanimi
ssh kullanımını gösteren bir örnek

Servera bağlanma isteği gönderen Ahmet ile server arasında anahtar değiştirme işlemine olanak sağlayan Diffie–Hellman key exchange adı verilen bir yöntem gerçekleşir. Kısaca Diffie–Hellman key exchange işlemi, taraflar arasındaki public keyler ile matematiksel bir gerçeğin müşterek bir şekilde kullanılarak, sadece client ve server tarafından bilinen ortak bir anahtar oluşturma işlemine dayanır. Bu ortak anahtara literatürde shared secret adı verilmektedir. İşte bu oluşturulan shared secret ile bağlantı şifrelenir. Diffie-Helman key exchange işlemini daha detaylı anlayabilmek için bu wikipedia sayfasını ve ayrıca aşağıdaki videoyu izleyebilirsiniz.

Yukarıdaki videoda da görüldüğü gibi ortak bir anahtar oluşturulduktan sonra Ahmet serverla karşılıklı olarak kriptolu iletişim kurabilir.

Evet güvensiz bir hat üzerinden güvenli bir şekilde anahtar değişimine olanak sağlayan Diffie–Hellman key exchange işlemine yeteri kadar değindiğimizi düşünüyorum. Bu işlemden farklı olarak verimizi istersek asymmetric key encryption adı verilen bir diğer şifreleme sistemi ile de şifreleyebiliriz. Asymmetric key encryption,  göndereceğimiz verinin client tarafında serverın public keyi ile şifrelenip yeniden servera gönderilmesi işlemine dayanıyor. Serverın açık anahtarı ile şifrelenmiş olan veriyi sadece o açık anahtar ile matematiksel olarak ilişkili olan private key okuyabileceğinden, verimiz güvenli bir şekilde ssh bağlantısı üzerinden iletilmiş olur. Asymmetric key encryption ile ilgili olan aşağıdaki görseli dikkatle inceleyelim.

acik-anahtarli-sifreleme-asimetrik-kodputer
asymmetric key encryption şemasını temsil eden bir örnek

Senaryo 2 (Kimlik Doğrulama Yöntemi Kullanılarak Yapılan Bağlantı)

Ahmet, çalıştığı şirketteki mesaisini bitirir ve evin yolunu tutar. Yorucu bir trafikten sonra evine gelir ve dinlenmeye başlar. Tam Ohh be! diyeceği zaman telefonu çalar. Arayan patronudur. Telefonu istemeyerek açar ve patronundan “Acil olarak 24 numaralı serverın wordpress yazılımını güncelle” şeklinde bir emir alır. İşte tam burada Ahmet homurdanarak bilgisayarını açar ve servera parola gerektirmeden bağlanmak için bilgisayarında açık ve gizli anahtar çifti oluşturur. Bunun için aşağıdaki kodu yazar;

ssh-keygen -t rsa

Ahmet bu komutu yazdıktan anahtar çiftlerinin kaydedileceği yeri onaylar ve daha sonra private keyin brute-force saldırılarına karşı korunması için bir passpharese girer. Bu adımları tamamladıktan sonra Ahmet’in bilgisayarında birbiri ile matematiksel bir bağ içeren gizli ve açık anahtar çiftleri oluşturulmuş olacaktır. Anlatılan işlemi eksiksiz olarak yapan Ahmet son olarak aşağıdaki gibi bir ekranla karşılaşır.

after-generating

Anahtar çiftlerini oluşturan Ahmet, server’da bulunan ~/.ssh/authorized_keys adlı klasörün içine kendi oluşturduğu public keyi yani açık anahtarı eklemek zorundadır. Ahmet’in bu işlemi yapabilmesi için servera tam yetkili bir şekilde erişmesi gerekmektedir. Aksi takdirde ~/.ssh/authorized_keys adlı klasörde değişiklik yapamaz. Bunun farkında olan Ahmet hiç endişe etmez. Çünkü çalıştığı şirkette ağ yöneticisi olduğu için istediği servera root yani tam yetkili bir şekilde bağlanabilir. Aynen bahsettiğimiz gibi servera bağlanan Ahmet ~/.ssh/authorized_keys adlı klasörün içine açık anahtarı yerleştirir.

Kendi açık anahtarını servera ekleyen Ahmet’in artık tek yapması gereken; servera gizli anahtarını göstererek bağlanma isteği yollamak. Ahmet bu isteği aşağıdaki komut ile yollar.

ssh -i <private_key_yolu> <kullanici_adi>@<server_ip> veya ssh -i <private_key_yolu> <kullanici_adi>@<server_dns>

İşte tam bu sırada kimlik doğrulama işlemi başlar ve bu işlemin yapılmasından SSH protokolü sorumludur. Eğer Ahmet’in SSH bağlantısı ile belirttiği gizli anahtar, server’ın ~/.ssh/authorized_keys dosyası içinde bulunan açık anahtarlardan biri ile eşleşiyorsa, yani matematiksel olarak birbirlerine bağlı ise sunucu Ahmet’e erişim yetkisi verir ve kimlik doğrulama işlemi başarı ile tamamlanmış olur. Artık parola girmeye gerek kalmadan Ahmet servera istediği gibi bağlanır ve komutlarını serverın kabuğunda girmeye başlar.

Kimlik doğrulama işlemini temsil eden bir görsel

Tek seferde anlamanın zor olduğunu kabul ediyorum. Konuyu daha iyi anlamanız açısından farklı kaynakları araştırmanız yerinde olacaktır. Mesela ssh ile alakalı olarak bu wikipedia sayfasını açık anahtarlı şifreleme ile alakalı olarak benimde faydalanmış olduğum bu siteyi ziyaret edebilirsiniz. Bir sonraki yazımda görüşmek üzere.

Yazar Hakkında

Hakan İlbiz

Siber güvenlik, linux, programlama ve network gibi bilgisayar bilimlerini kapsayan alanlarda yaptığı çalışmalardan edindiği tecrübeleri, kurucusu olduğu kodputer.com adlı web sitesinde okurlarına sunan ve bundan büyük bir haz duyan Sakarya Üniversitesi Bilgisayar Mühendisliği öğrencisi.

Yorum Ekle

Yorum Yazmak İçin Tıkla