Neler yeni

Yazılım Forum

Tüm özelliklerimize erişmek için şimdi bize katılın. Kayıt olduktan ve giriş yaptıktan sonra konu oluşturabilecek, mevcut konulara yanıt gönderebilecek, itibar kazanabilecek, özel mesajlaşmaya erişebilecek ve çok daha fazlasını yapabileceksiniz! Bu hizmetlerimiz ise tamamen ücretsiz ve kurallara uyulduğu sürece sınırsızdır, o zaman ne bekliyorsunuz? Hadi, sizde aramıza katılın!

SSH ile Güvenli Uzak Erişim: Kapsamlı Kurulum ve Yönetim Rehberi

Giriş: SSH Nedir ve Neden Hayati Önem Taşır?

SSH (Secure Shell), bilgisayarlar arasında şifrelenmiş ağ hizmetleri sunan bir kriptografik ağ protokolüdür. En yaygın kullanımı, uzak bir sunucuya veya cihaza güvenli bir şekilde bağlanarak komut satırı üzerinden yönetim işlemlerini gerçekleştirmektir. Geleneksel, şifrelenmemiş protokoller (Telnet, rlogin, FTP gibi) veri hırsızlığına ve yetkisiz erişime açıkken, SSH tüm iletişimi şifreleyerek bu tür riskleri ortadan kaldırır. Bu özelliği sayesinde, internet üzerinden hassas verilerin iletimi ve sunucu yönetimi için vazgeçilmez bir araç haline gelmiştir. Bir sistem yöneticisi veya geliştirici olun, SSH bilgisi günümüz dijital altyapısında temel bir gerekliliktir.

SSH Nasıl Çalışır?

SSH, bir istemci-sunucu mimarisi üzerinde çalışır. SSH istemcisi (bilgisayarınız) ile SSH sunucusu (uzak makine) arasında güvenli bir tünel oluşturulur. Bu tünel, şifreleme algoritmaları ve kimlik doğrulama mekanizmaları kullanarak iletişimin gizliliğini ve bütünlüğünü sağlar.

  • Şifreleme: SSH, hem simetrik hem de asimetrik şifrelemeyi bir arada kullanır. Bağlantı başlangıcında, istemci ve sunucu, oturum boyunca kullanılacak paylaşımlı bir simetrik anahtar oluşturmak için asimetrik şifrelemeyi (anahtar değişim protokolü) kullanır. Bu anahtar, tüm veri trafiğini şifrelemek için kullanılır.
  • Kimlik Doğrulama: Sunucunun kimliğini doğrulamak için bir host anahtarı kullanılır, böylece istemci doğru sunucuya bağlandığından emin olur. Kullanıcının kimliğini doğrulamak için ise genellikle parola veya anahtar tabanlı kimlik doğrulama yöntemleri kullanılır. Anahtar tabanlı kimlik doğrulama, genellikle daha güvenli ve pratik kabul edilir.

SSH Kurulumu ve Temel Kullanım

Çoğu Linux dağıtımı ve macOS işletim sistemi, varsayılan olarak OpenSSH istemcisi ile birlikte gelir. Windows 10 ve sonrası da yerleşik OpenSSH istemcisine sahiptir. Eğer Windows'un eski bir sürümünü kullanıyorsanız, PuTTY gibi üçüncü taraf SSH istemcileri kullanabilirsiniz.

Temel bir SSH bağlantısı kurmak için aşağıdaki komutu kullanabilirsiniz:
Kod:
ssh kullanıcıadı@uzak_sunucu_ipadresi_veya_alan_adı
Örnek:
Kod:
ssh root@192.168.1.100
veya
Kod:
ssh admin@benim_sunucum.com

Eğer SSH sunucusu varsayılan port (22) dışında bir portta çalışıyorsa, `-p` parametresiyle portu belirtebilirsiniz:
Kod:
ssh -p 2222 kullanıcıadı@uzak_sunucu_ipadresi_veya_alan_adı

Parola ile Kimlik Doğrulama

SSH'ın en basit kimlik doğrulama yöntemidir. Bağlantı isteği gönderildiğinde, sunucu kullanıcıdan parolasını girmesini ister. Parola doğruysa bağlantı kurulur. Ancak, zayıf parolalar brute-force saldırılarına karşı savunmasızdır ve bu yöntem otomatik betikler için pek uygun değildir.

Anahtar Tabanlı Kimlik Doğrulama (Önerilen ve Daha Güvenli)

Bu yöntem, bir genel anahtar (public key) ve özel anahtar (private key) çifti kullanarak kimlik doğrulaması yapar. Özel anahtar istemcinizin bilgisayarında güvende tutulurken, genel anahtar uzak sunucuya kopyalanır. Bağlantı kurulduğunda, sunucu genel anahtarınızı kullanarak size bir meydan okuma gönderir ve siz bu meydan okumayı özel anahtarınızla şifresini çözerek yanıtlarsınız. Bu süreç, parolanın ağ üzerinden gönderilmesini gerektirmediği için çok daha güvenlidir.

SSH Anahtar Çifti Oluşturma:
Terminalinizde aşağıdaki komutu çalıştırın:
Kod:
ssh-keygen
Komut sizden anahtar çiftini kaydedeceğiniz konumu ve isteğe bağlı olarak bir parola (passphrase) girmenizi isteyecektir. Güvenlik için bir parola girmeniz şiddetle tavsiye edilir. Bu parola, özel anahtarınızın çalınması durumunda bile yetkisiz kullanımını engeller.
Genellikle, anahtarlar `~/.ssh/id_rsa` (özel anahtar) ve `~/.ssh/id_rsa.pub` (genel anahtar) olarak kaydedilir.

Genel Anahtarı Sunucuya Kopyalama:
En kolay yol `ssh-copy-id` yardımcı programını kullanmaktır:
Kod:
ssh-copy-id kullanıcıadı@uzak_sunucu_ipadresi_veya_alan_adı
Bu komut, genel anahtarınızı (`id_rsa.pub`) uzak sunucudaki ilgili kullanıcının `~/.ssh/authorized_keys` dosyasına ekler.

Eğer `ssh-copy-id` kurulu değilse veya kullanılamıyorsa, manuel olarak kopyalayabilirsiniz:
Kod:
cat ~/.ssh/id_rsa.pub | ssh kullanıcıadı@uzak_sunucu_ipadresi_veya_alan_adı "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
Bu komut, önce `.ssh` dizinini oluşturur (eğer yoksa), izinlerini ayarlar, genel anahtarınızı `authorized_keys` dosyasına ekler ve bu dosyanın izinlerini ayarlar.

SSH Yapılandırma Dosyası (~/.ssh/config)

Tekrarlayan bağlantıları kolaylaştırmak ve özelleştirmek için `~/.ssh/config` dosyasını kullanabilirsiniz. Bu dosya, farklı sunucular için takma adlar, özel portlar, kullanıcı adları ve anahtar dosyaları tanımlamanıza olanak tanır.

Örnek bir yapılandırma:
Kod:
Host sunucum
    HostName 192.168.1.100
    User admin
    Port 2222
    IdentityFile ~/.ssh/id_rsa_sunucum
    ForwardAgent yes

Host test_ortami
    HostName test.example.com
    User devuser
    Port 22
    IdentitiesOnly yes

Bu yapılandırmadan sonra, `ssh sunucum` veya `ssh test_ortami` gibi basit komutlarla karmaşık SSH bağlantılarını tek bir komuta indirgeyebilirsiniz. Her bir Host girişi, ayrı bir sunucu veya bağlantı profili tanımlar.

SSH Tünelleme ve Port Yönlendirme

SSH, sadece uzak bir kabuk erişimi sağlamakla kalmaz, aynı zamanda port yönlendirme (port forwarding) yetenekleriyle ağ trafiğini güvenli bir şekilde tünellemenize de olanak tanır. Bu özellik, güvenlik duvarları arkasındaki hizmetlere erişmek veya güvenli olmayan trafiği şifrelemek için kullanılabilir.

  • Yerel Port Yönlendirme (-L): Kendi bilgisayarınızdaki bir porttan, uzak sunucu üzerinden başka bir hedefe trafik yönlendirir.
    Kod:
    ssh -L [yerel_port]:[hedef_adres]:[hedef_port] kullanıcıadı@uzak_sunucu
    Örnek: Uzak sunucudaki bir web sunucusuna (port 80) kendi bilgisayarınızın 8080 portundan erişmek için:
    Kod:
    ssh -L 8080:localhost:80 kullanıcıadı@uzak_sunucu
    Artık tarayıcınızdan `http://localhost:8080` adresine giderek uzak sunucudaki web sitesine erişebilirsiniz.
  • Uzak Port Yönlendirme (-R): Uzak sunucudaki bir porttan, istemcinizin bilgisayarı üzerinden başka bir hedefe trafik yönlendirir. Bu, NAT veya güvenlik duvarı arkasındaki bir hizmeti dış dünyaya açmak için kullanışlıdır.
    Kod:
    ssh -R [uzak_port]:[hedef_adres]:[hedef_port] kullanıcıadı@uzak_sunucu
    Örnek: Kendi bilgisayarınızdaki bir web sunucusunu (port 80) uzak sunucunun 8080 portundan erişilebilir kılmak için:
    Kod:
    ssh -R 8080:localhost:80 kullanıcıadı@uzak_sunucu
    Şimdi, uzak sunucunun IP adresi veya alan adı ve 8080 portu üzerinden kendi bilgisayarınızdaki web sitesine erişilebilir.
  • Dinamik Port Yönlendirme (-D) - SOCKS Proxy: Belirli bir yerel porta bir SOCKS proxy sunucusu oluşturur. Bu, tüm ağ trafiğinizi (tarayıcılar, uygulamalar vb.) SSH tüneli üzerinden yönlendirmenizi sağlar, böylece internette daha güvenli ve gizli bir şekilde gezinebilirsiniz.
    Kod:
    ssh -D [yerel_port] kullanıcıadı@uzak_sunucu
    Örnek:
    Kod:
    ssh -D 1080 kullanıcıadı@uzak_sunucu
    Tarayıcı ayarlarınızda SOCKS proxy'yi `localhost:1080` olarak yapılandırdığınızda, tüm internet trafiğiniz uzak sunucu üzerinden geçecektir.

Güvenlik İpuçları ve En İyi Uygulamalar

SSH'ı güvenli bir şekilde kullanmak, sunucularınızın genel güvenliği için kritik öneme sahiptir. İşte uygulamanız gereken bazı en iyi uygulamalar:

  • Root Girişini Devre Dışı Bırakın: `sshd_config` dosyasında (
    Kod:
    /etc/ssh/sshd_config
    ) `PermitRootLogin no` olarak ayarlayarak doğrudan root kullanıcısıyla giriş yapmayı engelleyin. Bunun yerine normal bir kullanıcıyla giriş yapın ve gerekirse `sudo` kullanın.
  • Parola ile Kimlik Doğrulamayı Kapatın: Anahtar tabanlı kimlik doğrulamayı tamamen etkinleştirdikten sonra, `sshd_config` dosyasında `PasswordAuthentication no` olarak ayarlayarak parola ile girişi devre dışı bırakın. Bu, brute-force saldırılarını büyük ölçüde azaltır.
  • Varsayılan Portu Değiştirin: Varsayılan SSH portu olan 22 yerine rastgele yüksek bir port numarası (örneğin, 2222, 22222 vb.) kullanın. Bu, otomatik bot taramalarını ve saldırı girişimlerini azaltır, ancak tek başına bir güvenlik önlemi değildir. `Port 2222` gibi.
  • Güçlü SSH Anahtar Parolaları Kullanın: SSH anahtarınız için mutlaka güçlü bir parola (passphrase) belirleyin. Bu, özel anahtarınızın çalınması durumunda bile korunmasını sağlar.
  • Fail2Ban Kullanın: `Fail2Ban` gibi araçlar, başarısız giriş denemelerini izleyerek belirli bir eşiği aşan IP adreslerini otomatik olarak bloke eder. Bu, brute-force saldırılarına karşı etkili bir savunmadır.
  • Anahtarlarınızı Koruyun: Özel anahtar dosyanızın izinlerinin yalnızca sizin erişiminize izin verdiğinden emin olun (`chmod 400 ~/.ssh/id_rsa`). Özel anahtarınızı asla kimseyle paylaşmayın.
  • SSH İstemci ve Sunucusunu Güncel Tutun: Güvenlik açıklarını kapatmak için SSH yazılımınızı düzenli olarak güncelleyin.
  • Sınırlı Erişimli Kullanıcılar Oluşturun: Her hizmet veya uygulama için farklı, sınırlı yetkilere sahip kullanıcılar oluşturun.
  • Sadece Gerekli IP'lerden Erişime İzin Verin: Güvenlik duvarınızda, SSH erişimine sadece belirli IP adreslerinden izin vererek saldırı yüzeyinizi azaltın.

Ortak Sorunlar ve Çözümleri

SSH kullanırken karşılaşabileceğiniz bazı yaygın sorunlar ve çözümleri:

  • "Permission denied (publickey, password).":
    * Neden: Yanlış parola, `authorized_keys` dosyasında yanlış genel anahtar, `authorized_keys` veya `~/.ssh` dizininin yanlış dosya/dizin izinleri, sunucuda anahtar tabanlı kimlik doğrulama kapalı.
    * Çözüm: Parolanızı kontrol edin. Sunucudaki `~/.ssh/authorized_keys` dosyasını ve anahtarınızı kontrol edin. `~/.ssh` dizini için `chmod 700`, `~/.ssh/authorized_keys` için `chmod 600` izni olduğundan emin olun. `sshd_config` içinde `PubkeyAuthentication yes` olduğundan emin olun.
  • "Connection refused":
    * Neden: SSH sunucusu (sshd) çalışmıyor, sunucuda güvenlik duvarı SSH portunu engelliyor, yanlış port numarası kullanılıyor, uzak sunucu kapalı.
    * Çözüm: Uzak sunucunun çalıştığından emin olun. SSH servisini yeniden başlatmayı deneyin (`sudo systemctl restart sshd`). Güvenlik duvarı ayarlarını kontrol edin (örneğin `ufw status` veya `firewall-cmd --list-all`). Doğru port numarasını kullandığınızdan emin olun.
  • "Host key verification failed.":
    * Neden: Uzak sunucunun SSH host anahtarı değişmiş olabilir (sunucu yeniden kuruldu, farklı bir sunucuya bağlanmaya çalışılıyor) veya bir Man-in-the-Middle saldırısı olabilir.
    * Çözüm: Eğer sunucunun anahtarı bilerek değiştirildiyse, `~/.ssh/known_hosts` dosyasından ilgili satırı silebilirsiniz. Ancak, emin değilseniz, güvenlik araştırması yapmadan devam etmeyin.

SSH ile Dosya Transferi

SSH protokolü sadece terminal erişimi sağlamakla kalmaz, aynı zamanda güvenli dosya transferine de olanak tanır.

  • SCP (Secure Copy Protocol): Temel dosya transferleri için kullanılır. `cp` komutuna benzer bir sözdizimine sahiptir.
    Kod:
    scp [kaynak] [hedef]
    Örnekler:
    Yerelden uzağa kopyalama:
    Kod:
    scp yerel_dosya.txt kullanıcıadı@uzak_sunucu:/uzak/dizin/
    Uzakta klasör kopyalama (recursive):
    Kod:
    scp -r yerel_klasor/ kullanıcıadı@uzak_sunucu:/uzak/dizin/
    Uzaktan yerel kopyalama:
    Kod:
    scp kullanıcıadı@uzak_sunucu:/uzak/dizin/uzak_dosya.txt yerel/dizin/
  • SFTP (SSH File Transfer Protocol): Daha zengin özelliklere sahip interaktif bir dosya transfer protokolüdür. FTP'ye benzer bir arayüze sahiptir ancak SSH üzerinden çalıştığı için güvenlidir.
    Kod:
    sftp kullanıcıadı@uzak_sunucu
    Bağlandıktan sonra `ls`, `cd`, `put` (dosya yükleme), `get` (dosya indirme) gibi komutları kullanabilirsiniz.
    Örnek komutlar SFTP içinde:
    Kod:
    get uzak_dosya.txt
    Kod:
    put yerel_dosya.zip

Sonuç

SSH, günümüzün dijital altyapısında güvenli uzak erişim ve sunucu yönetimi için vazgeçilmez bir temel taşır. Doğru yapılandırma ve en iyi güvenlik uygulamalarını takip ederek, sistemlerinizi yetkisiz erişime ve veri ihlallerine karşı koruyabilirsiniz. Karmaşık ağ ortamlarında bile güvenli bir köprü görevi gören SSH, modern IT operasyonlarının bel kemiğidir. Bu rehber, SSH'ın temel prensiplerini, kullanımını ve ileri düzey özelliklerini anlamanıza yardımcı olmayı amaçlamıştır. Güvenliğinizi sağlamak için yukarıda bahsedilen tüm ipuçlarını uygulamanız önemlidir.

SSH Hakkında Daha Fazla Bilgi İçin
1200px-SSH_Tunnels.svg.png
 
shape1
shape2
shape3
shape4
shape5
shape6
Üst

Bu web sitenin performansı Hazal Host tarafından sağlanmaktadır.

YazilimForum.com.tr internet sitesi, 5651 sayılı Kanun’un 2. maddesinin 1. fıkrasının (m) bendi ve aynı Kanun’un 5. maddesi kapsamında Yer Sağlayıcı konumundadır. Sitede yer alan içerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır.

YazilimForum.com.tr, kullanıcılar tarafından paylaşılan içeriklerin doğruluğunu, güncelliğini veya hukuka uygunluğunu garanti etmez ve içeriklerin kontrolü veya araştırılması ile yükümlü değildir. Kullanıcılar, paylaştıkları içeriklerden tamamen kendileri sorumludur.

Hukuka aykırı içerikleri fark ettiğinizde lütfen bize bildirin: lydexcoding@gmail.com

Sitemiz, kullanıcıların paylaştığı içerik ve bilgileri 6698 sayılı KVKK kapsamında işlemektedir. Kullanıcılar, kişisel verileriyle ilgili haklarını KVKK Politikası sayfasından inceleyebilir.

Sitede yer alan reklamlar veya üçüncü taraf bağlantılar için YazilimForum.com.tr herhangi bir sorumluluk kabul etmez.

Sitemizi kullanarak Forum Kuralları’nı kabul etmiş sayılırsınız.

DMCA.com Protection Status Copyrighted.com Registered & Protected