SSH (Secure Shell) internet üzerinde güvenli bir şekilde ağ hizmetlerine uzaktan erişim sağlamak için kullanılan bir protokoldür. SSH, özellikle uzak sunuculara güvenli bir şekilde bağlanmak, dosya aktarımı yapmak ve ağ hizmetlerini yönetmek için tasarlanmıştır. SSH protokolü, veri şifreleme sayesinde, yetkisiz erişime ve veri dinlemeye karşı koruma sağlar. Böylece kullanıcı adı, şifre, ve iletilen diğer hassas bilgilerin güvenliği artırılmış olur.
SSH iki ana bileşenden oluşur: SSH istemcisi ve SSH sunucusu. SSH istemcisi, SSH protokolünü kullanarak uzak bir sunucuya güvenli bir şekilde bağlanmak isteyen kullanıcının bilgisayarında çalışır. SSH sunucusu ise, uzak makinede çalışır ve gelen SSH bağlantılarını kabul edip, yetkilendirme yapar ve istemci ile güvenli bir iletişim kanalı kurar.
SSH, genellikle komut satırı aracılığıyla kullanılır ve birçok işletim sistemi tarafından doğrudan veya üçüncü parti uygulamalar aracılığıyla desteklenir. SSH, özellikle sistem yöneticileri ve ağ profesyonelleri tarafından yaygın olarak kullanılmaktadır, çünkü sağladığı güvenlik ve esneklik sayesinde uzaktan sistem yönetimi ve bakımı işlemlerini kolaylaştırır.
SSH Key nedir?
SSH anahtarı, SSH protokolü kapsamında güvenli bir şekilde kimlik doğrulama yapmak için kullanılan bir çift yönlü kriptografik anahtar setidir. Bu anahtar seti, bir "açık anahtar" (public key) ve bir "özel anahtar" (private key) olmak üzere iki parçadan oluşur. SSH anahtarları, parola kullanmadan SSH üzerinden sunuculara ve diğer ağ cihazlarına güvenli bir şekilde erişim sağlamak için yaygın olarak kullanılır.
Özel Anahtar (Private Key): Kullanıcının bilgisayarında güvenli bir şekilde saklanır ve asla başkalarıyla paylaşılmamalıdır. Bu anahtar, sahibinin kimliğini doğrulamak ve şifreli iletişimi açmak için kullanılır.
Açık Anahtar (Public Key): Uzaktaki sunucu veya hizmet üzerinde saklanır. Herkese açık olabilir ve güvenlik riski taşımaz. Kullanıcı, SSH bağlantısı kurmak istediğinde, sunucu kullanıcının açık anahtarını kullanarak bir doğrulama isteği gönderir. Kullanıcı, özel anahtarını kullanarak bu isteği onaylar ve böylece kimliğini güvenli bir şekilde doğrulamış olur.
SSH anahtar tabanlı kimlik doğrulama, iki ana avantaja sahiptir:
Güvenlik: Parolaların aksine, SSH anahtarları kaba kuvvet (brute force) ve sözlük (dictionary) saldırılarına karşı çok daha güçlü bir koruma sağlar. Özel anahtarın güvenliğini sağlamak kullanıcının sorumluluğundadır.
Kolaylık: Kullanıcılar, bir kez SSH anahtarını yapılandırdıktan sonra, parola girmek zorunda kalmadan uzak sistemlere erişebilirler. Bu, özellikle otomatikleştirilmiş görevler ve betikler için büyük bir kolaylık sağlar.
SSH anahtarları, sistem yöneticileri ve geliştiriciler arasında, uzak sunuculara ve hizmetlere güvenli erişim sağlamak için tercih edilen yöntemdir. Anahtarların oluşturulması ve yönetilmesi genellikle SSH istemci yazılımları aracılığıyla gerçekleştirilir.
Temel adımları adım adım açıklamak gerekirse, SSH anahtar tabanlı kimlik doğrulama işlemi şu şekilde gerçekleşir:
SSH Anahtar Çiftinin Oluşturulması (İstemci Tarafında):
İstemci tarafında, kullanıcı bir SSH anahtar çifti oluşturur. Bu işlem, genellikle ssh-keygen gibi bir komut satırı aracı kullanılarak yapılır. Bu işlem sonucunda bir açık anahtar (public key) ve bir özel anahtar (private key) oluşturulur.
Açık Anahtarın Sunucuya Kopyalanması:
Oluşturulan açık anahtar, SSH erişimi istenen sunucuya aktarılır. Bu, genellikle ssh-copy-id komutu ile ya da açık anahtarın içeriğinin manuel olarak sunucunun ~/.ssh/authorized_keys dosyasına eklenmesiyle yapılır.
SSH Bağlantısı Kurulurken Kimlik Doğrulama:
İstemci, sunucuya SSH bağlantısı kurmak istediğinde, sunucu istemcinin açık anahtarı ile eşleşen bir özel anahtara sahip olup olmadığını kontrol eder. Bu, sunucunun authorized_keys dosyasında saklanan açık anahtarlarla karşılaştırma yaparak gerçekleştirilir.
Şifreli İletişim Başlatılması:
İstemcinin özel anahtarı varsa ve doğruysa, sunucu ile istemci arasında şifreli bir oturum başlatılır. İstemci, bu özel anahtarı kullanarak sunucuya gönderdiği tüm verileri şifreler. Sunucu, istemcinin açık anahtarıyla bu verilerin şifresini çözer. Bu işlem, iletişimin güvenliği için önemlidir ve verilerin üçüncü şahıslar tarafından okunmasını önler.
Bu süreçte, özel anahtarın güvenliği çok önemlidir ve asla başkalarıyla paylaşılmamalıdır. Özel anahtarınızı kaybederseniz veya başkalarının eline geçirse, sunucuya erişim güvenliğiniz riske girer. Açık anahtar ise genel olarak güvenli kabul edilir ve paylaşılabilir, çünkü sadece eşleşen özel anahtarın sahip olduğu bilgileri şifresini çözebilir.
SSH Anahtar Çiftinin Oluşturulması (Server Tarafında):
SSH anahtar çiftinin oluşturulması, genellikle istemci tarafında yapılsa da, bazı durumlarda sunucu tarafında da SSH anahtar çifti oluşturmak gerekebilir. Bu, özellikle sunucunun diğer sistemlere (örneğin, bir yedekleme sunucusuna veya başka bir veri merkezine) parolasız SSH erişimi gerektiğinde kullanılır. Sunucuda SSH anahtar çifti oluşturma adımları genellikle şu şekildedir:
Anahtar Çiftinin Oluşturulması:
Sunucuda bir terminal veya komut satırı arayüzü açın.
ssh-keygen komutunu kullanarak yeni bir SSH anahtar çifti oluşturun. Bu komut, kullanıcıya anahtar çiftinin kaydedileceği dosya konumu ve bir parola (isteğe bağlı) belirleme seçeneği sunar. Genellikle, varsayılan konum (~/.ssh/id_rsa için özel anahtar ve ~/.ssh/id_rsa.pub için açık anahtar) kabul edilir.
Komut örneği:
bash
Copy code
ssh-keygen -t rsa -b 4096
Bu komut, 4096 bit boyutunda bir RSA anahtar çifti oluşturur. -t seçeneği anahtar türünü, -b seçeneği ise anahtarın bit uzunluğunu belirler.
Açık Anahtarın İlgili Sunuculara Kopyalanması:
Oluşturulan açık anahtar (id_rsa.pub), SSH erişimi sağlamak istediğiniz diğer sunucuların ~/.ssh/authorized_keys dosyasına eklenmelidir. Bu işlemi ssh-copy-id komutu ile kolayca yapabilirsiniz. Eğer bu komut kullanılamıyorsa, açık anahtarın içeriğini manuel olarak kopyalayıp ilgili dosyaya yapıştırabilirsiniz.
Komut örneği:
bash
Copy code
ssh-copy-id user@remote-server.com
Bu komut, belirtilen kullanıcı adı ve sunucu için önceden oluşturulmuş açık anahtarı kopyalar.
SSH Bağlantısının Test Edilmesi:
Anahtar çifti oluşturulduktan ve açık anahtar ilgili sunuculara eklendikten sonra, SSH bağlantısı test edilerek her şeyin doğru şekilde yapılandırıldığından emin olunur.
Komut örneği:
bash
Copy code
ssh user@remote-server.com
Bu adımlar, sunucunun diğer sistemlere güvenli bir şekilde erişimi için gereken SSH anahtar tabanlı kimlik doğrulama işleminin temel adımlarıdır. Sunucu tarafında anahtar oluşturma işlemi de temelde istemci tarafında yapılan işlemle aynıdır; temel fark, oluşturulan anahtarların kullanım amacı ve yeridir.