Secure Shell veya Secure Socket Shell olarak da bilinen SSH, kullanıcılara, özellikle sistem yöneticilerine, güvenli olmayan bir ağ üzerinden bilgisayara güvenli bir şekilde erişmelerini, internet üzerinden sunucularını kontrol etmesini ve düzenlemesini sağlayan bir ağ protokolüdür. SSH sayesinde uzaktaki bilgisayarda sanki fiziksel olarak oradaymışsınız gibi shell komutları çalıştırabilirsiniz.
SSH ayrıca, SSH protokolünü uygulayan yardımcı programlardan oluşan bir pakettir. Secure Shell , internet gibi açık bir ağ üzerinden bağlanan iki bilgisayar arasında şifreli veri alıverişinin yanı sıra güçlü parola kimlik doğrulaması ve public key kimlik doğrulaması yapar. SSH, genelde ağ yöneticileri tarafından sistemleri, sunucularını ve uygulamaları internet ile uzaktan yönetmek için kullanılan bir protokoldür. Böylece kullanıcıların internet üzerinden başka bir bilgisayarda oturum açmalarını, programların ve sistemlerin verilere ve diğer kaynaklara erişmesini sağlayan komutları yürütmelerini ve dosyaları bir bilgisayardan diğerine uzaktan ve güvenle taşımalarını sağlar.
Oturumun görüntülendiği Secure Shell istemci uygulamasını, oturumun çalıştığı son olan bir SSH sunucusuna bağlayan istemci-sunucu modelini kullanır. SSH uygulamaları genellikle terminal öykünmesi veya dosya aktarımları için kullanılan uygulama protokollerini destekler.
Secure shell ile diğer uygulama protokolleri için güvenli tüneller oluşturulabilir. Bir SSH sunucusu, varsayılan olarak, standart TCP port22’yi kullanır.
Tüm veri merkezlerinde bulunan SSH, varsayılan olarak her Unix, Linux ve Mac sunucusuyla birlikte gönderilir. Secure Shell, araçları kullanarak veya doğrudan terminal aracılığıyla sunuculara bağlanmak, değişiklik yapmak, yükleme yapmak ve aktarım işlemleri için kullanılır.
SSH’nin kullanıcılara sağladığı işlevler:
- Kullanıcılar için SSH etkin ağ sistemlerine veya cihazlara güvenli uzaktan erişim;
- Otomatik, güvenli ve etkileşimli dosya aktarım oturumları ve dosya aktarımı;
- Uzak cihazlarda veya sistemlerde güvenli komutların iletilmesi;
- Ağ altyapısı bileşenlerinin güvenli yönetimi.
Secure shell, Telnet gibi daha az güvenli programlara yedek olmak için oluşturulduğu için terminal oturumlarını etkinleştirmek için etkileşimli olarak kullanılabilir. SSH, şifreleme tekniğini kullanarak uzaktaki sunucu ve sunucudan gelen tüm dosyaların şifrelenmesini sağlar. Uzaktaki bir kullanıcının kimliğini doğrulamak, istemciden hosta girişleri aktaran ve çıktıyı istemciye geri gönderen bir mekanizması vardır. Bu protokolde kullanılan 3 farklı şifreleme teknolojisi bulunur:
- Simetrik şifreleme: Paylaşılan anahtar ve paylaşılan gizlilik şifrelemesi olarak da bilinir. Simetrik şifrelemede temelde bir mesajın hem şifrelenmesi ve şifresinin çözülmesi için hem istemci hem de host tarafından aynı gizli anahtar kullanılır. Bu sayede, bu gizli anahtara sahip herhangi biri akterılan mesajın şifresini çözebilir.
- Asimetrik şifreleme: Bu şifreleme yönteminde şifreleme ve şifreyi çözme işlemleri için public key ve private key olan iki farklı anahtar kullanılır. Bu anahtarlar birlikte public-private anahtar çiftini oluştururlar.
- Hashing: Secure Shell Bağlantılarında tek yönlü hashing de kullanıldığında şifrelenen mesajları diğerlerinden farklı kılan özellik, mesajların çözülmesine gerek yoktur. Bu yöntemle her mesaj tek yönlü şifrelendikten sonra önceden ayarlanmış uzunlukta eşi olmayan bir mesaja dönüşür bu sayede mesaj tekrar geri dönmemiş olur.
SSH nasıl çalışır?
SSH’nin çalışması, iki uzak sistemin kimlik doğrulamasına ve aktarılan verilerin şifrelenmesine izin vermek için bir istemci-sunucu modeli ile gerçekleşir.
Secure Shell, uzak sistemlerde oturum açma ve terminal oturumlarını çalıştırabilir ve ayrıca Dosya Aktarım Protokolü (FTP) ve rcp (uzaktan kopya) gibi dosya aktarım programlarının da yerine geçer.
SSH’nin en temel kullanımı, bir terminal oturumu için uzak bir hosta bağlanmaktır. Bu komut aşağıdaki şekildedir:
ssh [email protected]
Bu komut ile istemci UserName kullanıcı kimliğini kullanarak server.example.com adlı sunucuya bağlanmaya çalışır. Local host ile sunucu arasında ilk kez bir bağlantı oluşturuluyorsa, kullanıcıdan uzak hostun public key parmak izi istenir ve önceden bağlantı olmamasına rağmen bağlanması istenir:
'sample.ssh.com' ana bilgisayarının gerçekliği belirlenemiyor. The authenticity of host 'sample.ssh.com' cannot be established. DSA key fingerprint is 01:23:45:67:89:ab:cd:ef:ff:fe:dc:ba:98:76:54:32:10. Are you sure you want to continue connecting (yes/no)?
Komut istemine evet yanıtı verirseniz oturum devam eder ve host anahtarı yerel sistemin known_hosts dosyasında saklanır. Bu dosya ana dizininde /.ssh/known_hosts gizli dizin içinde depolanan gizli bir dosyadır. Host anahtarı known_hosts dosyasında saklandıktan sonra, istemci sistemi herhangi bir onay gerekmeden doğrudan bu sunucuya yeniden bağlanabilir. Host anahtarı bağlantının kimliğini doğrular.
Secure shell anahtarları , kullanıcıların her seferinde parola yazmadan hesapları arasında geçiş yapabilmeleri için çoklu oturum açma ( SSO ) sağlar. Bunun yanı sıra sadece şifreli bir bağlantı üzerinden kimlik doğrulaması değil ayrıca tüm trafiği şifreler ve kullanıcıların yaptığı tüm işlemler gizli kalır.