SSH
Güvenli Kabuk
Kısaca
SSH, uzak bilgisayarlarda güvenle oturum açıp komut çalıştırmaya yarayan, iki makine arasındaki tüm trafiği şifreleyen kriptografik bir ağ protokolüdür.
SSH nedir?
SSH (Secure Shell), bir ağ üzerinden başka bir bilgisayara bağlanıp onu sanki başında oturuyormuşsunuz gibi denetlemeye yarayan bir protokoldür. ssh user@server.example.com yazmak, yazdığınız her komutun sunucuda çalıştığı bir uzak kabuk (shell) açar. Bağlantıdan geçen her şey, parolalar, komutlar ve çıktı dahil, şifrelenir; SSH'ın Telnet gibi eski düz metin araçlarının yerini almasının nedeni budur. SSH sunucuları varsayılan olarak TCP 22 portunu dinler.
Bağlandığınızda istemci ve sunucu önce şifreleme anahtarları üzerinde anlaşır ve sunucu kimliğini bir ana makine anahtarıyla kanıtlar. İlk seferde istemci sizden sunucunun parmak izini onaylamanızı ister ve onu ~/.ssh/known_hosts içine kaydeder; anahtar herhangi bir zaman değişirse sizi yüksek sesle uyarır, bu bir ortadaki adam (man-in-the-middle) saldırısının işareti olabilir. Ardından bir parolayla ya da tercihen bir anahtar çiftiyle giriş yaparsınız: makinenizde kalan bir özel anahtar ve sunucunun ~/.ssh/authorized_keys dosyasına kopyaladığınız bir genel anahtar. Anahtar tabanlı giriş açık anahtarlı kriptografiye dayanır, bu yüzden gizli bilginiz ağdan hiç geçmez.
SSH, uzak bir makineye giden ve yalnızca sizin ile sunucunun duyabildiği kilitli, özel bir telefon hattı gibidir. Geliştiriciler onu her gün Linux sunucularını yönetmek, git@host:org/repo.git gibi URL'lerle Git depolarına push ve pull yapmak, scp ve sftp ile dosya kopyalamak ve yerel bir portu yalnızca sunucunun ulaşabildiği bir hizmete, örneğin özel bir veritabanına, yönlendiren tüneller açmak için kullanır. CI/CD işlem hatları da kodu sunuculara dağıtmak için SSH anahtarlarını kullanır.
SSH, ikisi de ağ trafiğini şifrelediği için sıklıkla SSL/TLS ile karıştırılır. TLS diğer protokoller için bağlantıları güvenli hale getirir, en görünür biçimde tarayıcıdaki HTTPS için, ve sertifika otoritelerinin verdiği sertifikalara dayanır; SSH ise uzak girişler, komutlar ve dosya aktarımları için yapılmış bağımsız bir protokoldür ve genellikle kullanıcıların kendilerinin doğruladığı anahtarlara güvenir. SSH bazen VPN sanılır: bir SSH tüneli belirli portları yönlendirirken, VPN tipik olarak bir cihazın tüm trafiğini taşır.
Önemli noktalar
- SSH, şifreli uzak giriş, komut çalıştırma ve dosya aktarımı sağlar.
- SSH sunucuları varsayılan olarak TCP
22portunu dinler. - Özel ve genel anahtarla yapılan anahtar tabanlı kimlik doğrulama, parolalardan daha güvenlidir.
- İstemci, sahtekârları saptamak için her sunucunun ana makine anahtarını
known_hostsiçinde hatırlar. - Git,
scp,sftpve port yönlendirme hepsi SSH üzerinden çalışır.
Örnek
# Create a key pair (the private key stays in ~/.ssh/id_ed25519)
ssh-keygen -t ed25519 -C "dev laptop"
# Copy the public key into the server's authorized_keys file
ssh-copy-id deploy@server.example.com
# Log in without a password and run a single remote command
ssh deploy@server.example.com "uptime"
# Tunnel: reach the server's private database at localhost:5432
ssh -L 5432:localhost:5432 deploy@server.example.comSık sorulan sorular
SSH ile SSL/TLS arasındaki fark nedir?
İkisi de trafiği şifreler ama farklı amaçlara hizmet eder. TLS, HTTPS gibi diğer protokolleri güvenli hale getirir ve sertifika otoritelerinin verdiği sertifikaları kullanır; SSH ise uzak girişler, komutlar ve dosya aktarımları için bağımsız bir protokoldür ve genellikle kullanıcıların kendilerinin doğruladığı anahtarlara dayanır.
SSH anahtarıyla kimlik doğrulama parolaya göre daha güvenli midir?
Evet. Özel anahtar tahmin edilemeyecek kadar uzundur, makinenizden hiç çıkmaz ve bir parola ibaresiyle (passphrase) korunabilir; parolalar ise tahmin edilebilir, yeniden kullanılabilir veya oltalamayla ele geçirilebilir. Birçok sunucu anahtarlar kurulduktan sonra parolayla girişi tamamen kapatır.
SSH hangi portu kullanır?
SSH varsayılan olarak TCP 22 portunu kullanır. Yöneticiler otomatik giriş denemelerini azaltmak için bazen onu başka bir porta taşır, ama bu anahtar tabanlı kimlik doğrulamanın ve bir güvenlik duvarının yerini tutmaz.
İlgili sayfalar
- Açık Anahtarlı KriptografiGüvenlik, s. 1Açık anahtarlı kriptografi, veriyi şifreleyip imzalamak için herkesin görebildiği bir açık anahtar ile gizli tutulan bir özel anahtardan oluşan çift kullanır.
- ŞifrelemeGüvenlik, s. 42Şifreleme, veriyi bir anahtarla karıştırarak yalnızca doğru anahtara sahip olanın onu özgün ve okunabilir hâline geri çevirebilmesini sağlama işlemidir.
- TLSGüvenlik, s. 44TLS, ağda gönderilen veriyi şifreleyen ve sunucunun kimliğini doğrulayan, HTTPS, e-posta ve birçok başka bağlantıyı güvenceye alan kriptografik protokoldür.
- Shellİşletim Sistemleri, s. 28Shell, kullanıcının yazdığı ya da bir betikte yazılı komutları okuyup işletim sisteminden çalıştırmasını isteyen, genellikle metin arayüzlü bir programdır.
- PortAğlar, s. 22Port, bir cihazdaki belirli bir programı ya da hizmeti tanımlayan, 0 ile 65535 arasında bir sayıdır; IP adresine gelen trafik böylece doğru uygulamaya ulaşır.
- LinuxDevOps ve Bulut, s. 31Linux, çoğu sunucuyu, bulutu, konteyneri ve Android telefonu çalıştıran, genellikle dağıtım olarak paketlenen açık kaynaklı bir işletim sistemi çekirdeğidir.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin