SSH (Secure Shell), uzak makinelerle güvenli bağlantı kurmayı sağlayan bir ağ protokolüdür. Özellikle yönetim ve bakım işlemleri için yaygın olarak kullanılır. SSH, kullanıcıların veri iletimini şifreleyerek güvenli hale getirir ve kimlik doğrulama sağlar.
SSH Nedir ve Nasıl Çalışır?
SSH, kullanıcıların güvenli bir şekilde uzak bir bilgisayara veya sunucuya erişmelerini sağlar. SSH’nin temel bileşenleri şunlardır:
- SSH İstemcisi (Client): Kullanıcının bilgisayarında çalışan ve SSH sunucusuna bağlanan yazılım.
- SSH Sunucusu (Server): Bağlantı isteklerini kabul eden ve kullanıcıların bağlanmasına izin veren uzak makinedeki yazılım.
- Şifreleme: SSH, veri iletimini güvenli hale getirmek için asimetrik ve simetrik şifreleme algoritmalarını kullanır.
- Kimlik Doğrulama: Kullanıcı kimliğinin doğrulanması için şifreler, SSH anahtarları veya diğer yöntemler kullanılır.
SSH Bağlantısının Adımları
- Bağlantı Kurulumu: SSH istemcisi, SSH sunucusuna bağlanmak için bir bağlantı isteği gönderir.
- Anahtar Değişimi: Sunucu, istemciye kendi açık anahtarını gönderir. İstemci, bu anahtarı kullanarak simetrik bir oturum anahtarı oluşturur.
- Kimlik Doğrulama: İstemci, kimlik doğrulama bilgilerini sunucuya gönderir. Bu genellikle bir şifre veya SSH anahtarıdır.
- Veri İletimi: Bağlantı kurulduktan sonra, tüm veri iletimi şifrelenmiş bir şekilde gerçekleşir.
SSH Anahtarları
SSH anahtarları, kimlik doğrulama için şifrelerden daha güvenli bir yöntemdir. Anahtar tabanlı kimlik doğrulama, iki anahtar çifti kullanır: bir özel anahtar (private key) ve bir açık anahtar (public key).
- Özel Anahtar (Private Key): Kullanıcının bilgisayarında saklanır ve kimseyle paylaşılmaz.
- Açık Anahtar (Public Key): Uzak sunucuya yüklenir ve özel anahtar ile eşleşir.
Anahtar tabanlı kimlik doğrulama, şu adımlarla gerçekleştirilir:
- Kullanıcı, özel anahtarını kullanarak sunucuya bağlanmaya çalışır.
- Sunucu, kullanıcının açık anahtarını kontrol eder.
- Eğer anahtarlar eşleşirse, kimlik doğrulama başarılı olur ve kullanıcı bağlanır.
SSH Konfigürasyonu
SSH sunucusunun ve istemcisinin konfigürasyonu, bağlantının güvenliğini ve işlevselliğini artırmak için önemlidir. İşte bazı önemli konfigürasyon ayarları:
SSH Sunucusu (sshd_config):
- Port: Varsayılan olarak 22 numaralı port kullanılır, ancak güvenlik için değiştirilmesi önerilir.
- PermitRootLogin: Root kullanıcı ile doğrudan girişe izin verilmesi güvenlik riski taşır, bu nedenle “no” olarak ayarlanması tavsiye edilir.
- PasswordAuthentication: Anahtar tabanlı kimlik doğrulamayı zorlamak için şifre ile kimlik doğrulamanın kapatılması önerilir.
- AllowUsers: Belirli kullanıcıların SSH erişimine izin vermek için kullanılır.
SSH İstemcisi (ssh_config):
- Host: Belirli sunucular için özel ayarlar tanımlamak için kullanılır.
- IdentityFile: Kullanılacak özel anahtarın belirtildiği yer.
- Port: Sunucunun kullandığı portun belirtildiği yer.
SSH Arayüzü
SSH, genellikle komut satırı arayüzü (CLI) üzerinden kullanılır, ancak grafiksel kullanıcı arayüzü (GUI) ile çalışan SSH istemcileri de mevcuttur. İşte SSH arayüzleri hakkında daha fazla bilgi:
Komut Satırı Arayüzü (CLI):
- SSH Komutu: SSH bağlantısı kurmak için temel komut
ssh
komutudur. - Kullanım örneği:
ssh username@remote_host
Bu komut, belirtilen kullanıcı adı ve uzak ana bilgisayar (IP adresi veya etki alanı adı) ile bir SSH bağlantısı başlatır.- SCP Komutu: Güvenli dosya kopyalama için
scp
komutu kullanılır. - Kullanım örneği:
scp local_file username@remote_host:/remote_directory
- SFTP Komutu: SSH üzerinden güvenli dosya aktarımı için
sftp
komutu kullanılır. - Kullanım örneği:
sftp username@remote_host
Grafiksel Kullanıcı Arayüzü (GUI) SSH İstemcileri:
- PuTTY: Windows işletim sistemi için yaygın olarak kullanılan ücretsiz bir SSH istemcisidir. Kullanıcı dostu arayüzü ile SSH bağlantıları, SCP ve SFTP işlemleri kolayca yapılabilir.
- MobaXterm: Gelişmiş özelliklere sahip, hem SSH hem de diğer uzaktan bağlantı protokollerini destekleyen bir araçtır. X11 yönlendirme, dosya yöneticisi ve çoklu sekme desteği sunar.
- Termius: MacOS, Windows ve Linux için kullanılabilen, modern ve kullanıcı dostu bir SSH istemcisidir. Mobil versiyonları da mevcuttur ve bulut senkronizasyonu gibi ek özellikler sunar.
SSH Yapılandırma Dosyaları:
- .ssh/config: SSH bağlantılarını kolaylaştırmak ve kişiselleştirmek için kullanılan yapılandırma dosyasıdır. Örnek yapılandırma:
Host myserver HostName remote_host User username Port 22 IdentityFile ~/.ssh/id_rsa
Bu ayarlar,ssh myserver
komutunu kullanarak kolayca bağlantı kurmanızı sağlar.
SSH ile Yaygın Kullanım Senaryoları
Uzaktan Yönetim: SSH, sistem yöneticilerinin uzak sunucuları yönetmelerini sağlar. Komut satırı üzerinden yapılan işlemlerle sunucu konfigürasyonu, yazılım kurulumu ve bakım işlemleri gerçekleştirilir.
Dosya Transferi: SCP (Secure Copy) ve SFTP (SSH File Transfer Protocol), SSH üzerinden güvenli dosya transferi sağlar. Özellikle hassas verilerin güvenli bir şekilde taşınması için kullanılır.
Tünelleme: SSH tünelleme, bir ağ protokolünün başka bir ağ protokolü üzerinden güvenli bir şekilde iletilmesini sağlar. Bu, özellikle güvenli olmayan ağlarda güvenli veri iletimi için kullanılır.
Port Yönlendirme: SSH port yönlendirme, yerel bir portu uzak bir sunucudaki portla ilişkilendirerek veri iletimini güvenli hale getirir. Bu, uzaktaki hizmetlere güvenli erişim sağlamak için kullanılır.
Güvenlik İpuçları
- Güncellemeleri Takip Edin: SSH yazılımını ve sunucuyu güncel tutarak güvenlik açıklarını kapatın.
- Güçlü Parolalar Kullanın: Şifre tabanlı kimlik doğrulama kullanıyorsanız, güçlü ve karmaşık parolalar tercih edin.
- İki Faktörlü Kimlik Doğrulama: Ek güvenlik sağlamak için iki faktörlü kimlik doğrulama (2FA) kullanın.
- IP Kısıtlamaları: Yalnızca belirli IP adreslerinin SSH erişimine izin verin.
- Logları İzleyin: SSH erişim loglarını düzenli olarak izleyerek şüpheli aktiviteleri tespit edin.