15%

Tüm Hosting Hizmetlerinde %15 indirim

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın:

Skills
Başlayın
28.10.2024

SSH Üzerinden Dosya Kopyalama: SCP, rsync ve SFTP için Kapsamlı Kılavuz

SSH (Secure Shell), güvenli uzak sunucu yönetiminin temel taşıdır. İster kod dağıtan bir geliştirici, ister altyapı yöneten bir sistem yöneticisi, isterse bir VPS Hosting ortamını sürdüren ileri düzey bir kullanıcı olun, makineler arasında güvenli dosya aktarımı sürekli gerçekleştireceğiniz bir görevdir.

Bu kapsamlı kılavuz, SSH üzerinden dosya kopyalamanın tüm önemli yöntemlerini ele almaktadır — SCP, rsync, SFTP ve anahtar tabanlı otomasyon dahil — gerçek dünya sözdizimi, pratik örnekler ve daha hızlı ve güvenli çalışmanıza yardımcı olacak uzman ipuçlarıyla.

Dosya Aktarımları için Neden SSH Kullanılmalı?

Araçlara geçmeden önce, SSH tabanlı dosya aktarımının neden sunucu yöneticileri ve geliştiriciler için sektör standardı olduğunu anlamak faydalıdır.

  • Uçtan uca şifreleme: Kimlik bilgileri, komutlar ve dosya içerikleri dahil her veri baytı, modern kriptografik algoritmalar kullanılarak aktarım sırasında şifrelenir. Bu, SSH aktarımlarını paket dinleme ve ortadaki adam saldırılarına karşı bağışık kılar.
  • Ek yazılım gerekmez: SSH, neredeyse her Linux/Unix sistemine önceden yüklenmiş olarak gelir ve Windows 10+ ile macOS’ta yerel olarak kullanılabilir.
  • Çok yönlülük: Tek bir SSH bağlantısı; etkileşimli kabuk oturumlarını, dosya aktarımlarını, port yönlendirmeyi ve otomatik komut dosyalarını yönetebilir.
  • Otomasyona uygun: SSH, cron görevleri, CI/CD ardışık düzenleri ve yedekleme komut dosyalarıyla sorunsuz entegre olarak tam otomatik, şifresiz dosya aktarımlarına olanak tanır.
  • Güvenilirlik: SSH bağlantıları, özellikle rsync gibi araçlarla birleştirildiğinde ağ kesintilerini sorunsuz şekilde yönetir.

Yöntem 1: SCP (Secure Copy Protocol) ile Dosya Kopyalama

SCP, SSH üzerinden tek seferlik dosya aktarımları için en basit ve en yaygın kullanılan araçtır. Mevcut SSH bağlantınızdan yararlanarak ana bilgisayarlar arasında güvenli dosya kopyalama işlemi gerçekleştirir.

Temel SCP Sözdizimi

scp [options] [source] [destination]

Örnek 1: Yerel Makineden Uzak Sunucuya Dosya Yükleme

scp /path/to/local/file username@remote_host:/path/to/remote/destination

Açıklama:

    /path/to/local/file — yerel makinenizde aktarmak istediğiniz dosya
    username@remote_host — SSH kullanıcı adınız ve sunucunun ana bilgisayar adı veya IP adresi
    /path/to/remote/destination — uzak sunucudaki hedef dizin veya dosya yolu
    
    Örnek 2: Uzak Sunucudan Yerel Makineye Dosya İndirme
    scp username@remote_host:/path/to/remote/file /path/to/local/destination
    Sunucudan yerel makinenize dosya çekmek için kaynak ve hedefi ters çevirin.
    Örnek 3: Tüm Bir Dizini Özyinelemeli Olarak Kopyalama
    scp -r /path/to/local/directory username@remote_host:/path/to/remote/destination
    -r bayrağı, SCP’ye dizini ve iç içe geçmiş alt dizinler dahil tüm içeriğini özyinelemeli olarak kopyalamasını söyler.
    Kullanışlı SCP Seçenekleri
    
    
    
    
    Seçenek
    Açıklama
    
    
    
    
    -P [port]
    Özel bir SSH portu belirtin (not: SSH’nin küçük harf -p‘inin aksine büyük harf -P)
    
    
    -C
    Yavaş bağlantılarda daha hızlı aktarım için sıkıştırmayı etkinleştirin
    
    
    -i [identity_file]
    Kimlik doğrulama için belirli bir SSH özel anahtarı kullanın
    
    
    -l [limit]
    Bant genişliği kullanımını Kbit/s cinsinden sınırlayın
    
    
    -q
    Sessiz mod — ilerleme çıktısını gizler
    
    
    -v
    Ayrıntılı mod — bağlantı sorunlarını ayıklamak için kullanışlıdır
    
    
    
    
    SCP Ne Zaman Kullanılmalı
    SCP, basitliğin önemli olduğu hızlı, tek seferlik dosya aktarımları için idealdir. Herhangi bir yapılandırma gerektirmez ve SSH yüklü herhangi bir sistemde kutudan çıktığı gibi çalışır. Ancak büyük dizinler veya tekrarlanan aktarımlar için rsync çok daha iyi bir seçimdir.
    Yöntem 2: rsync ile Dosya Kopyalama
    rsync, SSH üzerinden dosya senkronizasyonu ve aktarımı için profesyonellerin tercihidir. Öne çıkan özelliği delta aktarımıdır: Tüm dosyaları kopyalamak yerine rsync, kaynak ve hedefi analiz ederek yalnızca değişen bölümleri aktarır. Bu, sık güncellenen büyük dosyalar veya dizinlerle çalışırken büyük miktarda zaman ve bant genişliği tasarrufu sağlar.
    Temel rsync Sözdizimi
    rsync [options] [source] [destination]
    Örnek 1: Yerel Makineden Uzak Sunucuya Dosya Yükleme
    rsync -avz /path/to/local/file username@remote_host:/path/to/remote/destination
    Örnek 2: Tüm Bir Dizini Uzak Sunucuyla Senkronize Etme
    rsync -avz /path/to/local/directory/ username@remote_host:/path/to/remote/destination/
    > Önemli: Kaynak dizinin ardından gelen / sondaki eğik çizgisine dikkat edin. Sondaki eğik çizgiyle rsync, dizinin *içeriğini* kopyalar. Olmadan ise rsync, dizinin kendisini hedefin bir alt dizini olarak kopyalar.
    Örnek 3: Bir Dizini Yansıtma (Kaynaktan Silinen Dosyaları Sil)
    rsync -avz --delete /path/to/local/directory/ username@remote_host:/path/to/remote/destination/
    --delete bayrağı, kaynaktan silinen dosyaların hedeften de kaldırılmasını sağlayarak her iki konumu mükemmel şekilde senkronize tutar.
    Örnek 4: Özel SSH Portu Kullanma
    rsync -avz -e "ssh -p 2222" /path/to/local/directory/ username@remote_host:/path/to/remote/destination/
    Kullanışlı rsync Seçenekleri
    
    
    
    
    Seçenek
    Açıklama
    
    
    
    
    -a
    Arşiv modu: izinleri, zaman damgalarını, sembolik bağlantıları ve sahipliği korur
    
    
    -v
    Ayrıntılı: aktarım sırasında dosya bazında ilerlemeyi gösterir
    
    
    -z
    Sıkıştırma: ağ üzerinden aktarılan veriyi azaltır
    
    
    --delete
    Kaynakta artık mevcut olmayan hedef dosyaları siler
    
    
    --progress
    Her dosya için gerçek zamanlı ilerlemeyi gösterir
    
    
    --exclude
    Belirli dosyaları veya kalıpları hariç tutar (örn. --exclude '*.log')
    
    
    -n veya --dry-run
    Hiçbir şeyi kopyalamadan aktarımı simüle eder
    
    
    -e "ssh -p [port]"
    Özel bir SSH portu belirtin
    
    
    --bwlimit=[KB/s]
    Bağlantınızı doyurmamak için aktarım hızını kısıtlayın
    
    
    
    
    rsync Ne Zaman Kullanılmalı
    rsync’i yedeklemeler, dağıtımlar ve tekrarlayan senkronizasyon görevleri için kullanın. Bant genişliği verimliliği ve veri bütünlüğünün kritik olduğu Dedicated Server üzerinde büyük kod tabanlarını, medya kitaplıklarını veya veritabanı dışa aktarmalarını yönetirken özellikle güçlüdür.
    Yöntem 3: İki Uzak Sunucu Arasında Dosya Kopyalama
    Hem SCP hem de rsync’in daha az bilinen ancak son derece kullanışlı bir özelliği, verileri yerel makineniz üzerinden yönlendirmeden doğrudan iki uzak sunucu arasında dosya aktarabilme yeteneğidir. Bu, sunucu taşıma veya bulut örnekleri arasında veri senkronizasyonu yaparken son derece değerlidir.
    SCP ile İki Uzak Sunucu Arasında Dosya Kopyalama
    scp username1@remote_host1:/path/to/file username2@remote_host2:/path/to/destination
    rsync ile İki Uzak Sunucu Arasında Dosya Kopyalama
    rsync -avz username1@remote_host1:/path/to/source/ username2@remote_host2:/path/to/destination/
    > Not: Sunucudan sunucuya aktarımların çalışması için kaynak sunucunun hedef sunucuya SSH bağlantısı kurabilmesi gerekir. Kaynak sunucuda SSH anahtarlarını yapılandırmanız veya SSH ajan yönlendirmesini (ssh -A) kullanmanız gerekebilir.
    SSH Tünelleme ile Sunucudan Sunucuya Aktarım (Alternatif Yöntem)
    Güvenlik duvarı kısıtlamaları nedeniyle doğrudan sunucudan sunucuya SSH mümkün değilse, tar ve ssh kullanarak aktarımı yerel makineniz üzerinden yönlendirebilirsiniz:
    ssh username1@remote_host1 "tar czf - /path/to/source" | ssh username2@remote_host2 "tar xzf - -C /path/to/destination"
    Bu, yerel terminal oturumunuz aracılığıyla sunucu 1’den doğrudan sunucu 2’ye sıkıştırılmış bir arşiv akışı sağlar.
    Yöntem 4: SFTP (SSH File Transfer Protocol) ile Dosya Kopyalama
    SFTP, şifreli bir SSH bağlantısı üzerinden etkileşimli, FTP benzeri bir deneyim sunar. Tek komutlu bir araç olan SCP’nin aksine, SFTP dizinlere göz atabileceğiniz, dosyaları etkileşimli olarak yükleyebileceğiniz, indirebileceğiniz, yeniden adlandırabileceğiniz ve silebileceğiniz kalıcı bir oturum açar.
    SFTP Oturumu Başlatma
    sftp username@remote_host
    Aşağıdaki komutları çalıştırabileceğiniz bir SFTP istemine (sftp>) düşeceksiniz:
    Temel SFTP Komutları
    
    
    
    
    Komut
    Açıklama
    
    
    
    
    ls
    Mevcut uzak dizindeki dosyaları listeler
    
    
    lls
    Mevcut yerel dizindeki dosyaları listeler
    
    
    cd /remote/path
    Uzak dizini değiştirir
    
    
    lcd /local/path
    Yerel dizini değiştirir
    
    
    put /local/file /remote/destination
    Uzak sunucuya dosya yükler
    
    
    get /remote/file /local/destination
    Uzak sunucudan dosya indirir
    
    
    mput *.txt
    Bir kalıpla eşleşen birden fazla dosya yükler
    
    
    mget *.log
    Bir kalıpla eşleşen birden fazla dosya indirir
    
    
    mkdir /remote/newdir
    Uzak sunucuda bir dizin oluşturur
    
    
    rm /remote/file
    Uzak sunucudaki bir dosyayı siler
    
    
    exit veya quit
    SFTP oturumunu kapatır
    
    
    
    
    SFTP ile Özel SSH Portuna Bağlanma
    sftp -P 2222 username@remote_host
    SFTP Ne Zaman Kullanılmalı
    SFTP, etkileşimli dosya yönetimi oturumları için en uygun seçenektir — örneğin, uzak bir dizin yapısına göz atmanız, günlük dosyalarını seçici olarak indirmeniz veya bir web sunucusuna yapılandırma dosyaları yüklemeniz gerektiğinde. Birçok GUI istemcisi (FileZilla, Cyberduck ve WinSCP gibi) temel protokol olarak SFTP kullanır ve bu da onu teknik olmayan kullanıcılar için de erişilebilir kılar.
    Yöntem 5: SSH Anahtar Kimlik Doğrulaması ile Dosya Aktarımlarını Otomatikleştirme
    Her dosya aktarımı için manuel olarak şifre girmek verimsizdir ve otomasyonla uyumsuzdur. SSH anahtar tabanlı kimlik doğrulama, şifresiz, kriptografik olarak güvenli girişlere olanak tanıyarak bu sorunu çözer — herhangi bir otomatik yedekleme veya dağıtım iş akışı için bir ön koşuldur.
    Adım 1: SSH Anahtar Çifti Oluşturma
    Yerel makinenizde şunu çalıştırın:
    ssh-keygen -t ed25519 -C "your_email@example.com"
    > Not: ed25519 modern ve önerilen algoritmadır. Eski sistemlerle uyumluluk gerekiyorsa -t rsa -b 4096 kullanın.
    Anahtarı kaydetmek için istemleri izleyin (varsayılan konum: ~/.ssh/id_ed25519) ve ek güvenlik için isteğe bağlı olarak bir parola belirleyin.
    Adım 2: Genel Anahtarınızı Uzak Sunucuya Kopyalama
    ssh-copy-id username@remote_host
    Bu, genel anahtarınızı uzak sunucudaki ~/.ssh/authorized_keys dosyasına ekler. Şifreniz son kez istenecektir.
    ssh-copy-id mevcut değilse, bunu manuel olarak yapabilirsiniz:
    cat ~/.ssh/id_ed25519.pub | ssh username@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
    Adım 3: Şifresiz Kimlik Doğrulamayı Test Etme
    ssh username@remote_host
    Şifre istenmeden bağlanırsanız, anahtar tabanlı kimlik doğrulama doğru çalışıyor demektir.
    Adım 4: Kabuk Betiği ile Aktarımları Otomatikleştirme
    Şifresiz SSH yapılandırıldıktan sonra, artık cron görevlerinde veya betiklerde dosya aktarımlarını otomatikleştirebilirsiniz:
    #!/bin/bash
    # Daily backup script
    rsync -avz --delete /var/www/html/ username@backup_server:/backups/www/
    Geceleri çalıştırmak için bunu crontab’ınıza (crontab -e) ekleyin:
    0 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
    Yaygın SSH Dosya Aktarımı Sorunlarını Giderme
    Deneyimli yöneticiler bile sorunlarla karşılaşır. İşte en yaygın sorunlar ve çözümleri:
    İzin Reddedildi (publickey)
    
    Genel anahtarın uzak sunucudaki ~/.ssh/authorized_keys dosyasına doğru şekilde eklendiğini doğrulayın
    ~/.ssh dosyasının 700 izinlerine ve authorized_keys dosyasının 600 izinlerine sahip olduğunu kontrol edin
    SSH arka plan programının anahtar kimlik doğrulamasına izin verdiğini onaylayın (/etc/ssh/sshd_config içinde PubkeyAuthentication yes)
    
    Bağlantı Reddedildi
    
    SSH hizmetinin çalıştığını doğrulayın: systemctl status sshd
  • Doğru portun kullanıldığını kontrol edin
  • Güvenlik duvarı kurallarını inceleyin: ufw status veya iptables -L
  • Aktarım Hızı Yavaş

    • Sıkıştırmayı etkinleştirin: SCP için -C veya rsync için -z ekleyin
    • Daha hızlı bir şifre kullanın: ssh -c aes128-ctr (yüksek gecikmeli bağlantılarda daha az güvenli ama daha hızlı)
    • Büyük aktarımlar için ağınızı doyurmamak amacıyla --bwlimit ile rsync kullanmayı düşünün

    Ana Bilgisayar Anahtarı Doğrulaması Başarısız

    • Uzak sunucunun SSH parmak izi değişmiş (bir güvenlik sorunu veya sunucu yeniden yapılandırması olabilir)
    • Eski anahtarı kaldırın: ssh-keygen -R remote_host
    • Yeniden bağlanın ve kabul etmeden önce yeni parmak izini doğrulayın

    Doğru Aracı Seçme: SCP – rsync – SFTP

    ÖzellikSCPrsyncSFTP
    Kullanım kolaylığı⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
    Delta aktarımları
    Dizin senkronizasyonu✅ (özyinelemeli)✅ (--delete ile)✅ (manuel)
    Etkileşimli mod
    Otomasyon✅ (betiklerle)
    Bant genişliği verimliliğiDüşükYüksekDüşük
    En iyi kullanımHızlı tek seferlik aktarımlarYedekleme ve senkronizasyonEtkileşimli göz atma

    SSH Dosya Aktarımlarınızı Güvence Altına Alma: En İyi Uygulamalar

    Hangi aracı kullandığınızdan bağımsız olarak, sunucularınızı ve verilerinizi korumak için bu güvenlik en iyi uygulamalarını izleyin:

    1. Şifre kimlik doğrulamasını devre dışı bırakın — Yalnızca SSH anahtarlarını kullanın ve /etc/ssh/sshd_config içinde PasswordAuthentication no ayarlayın
    2. Varsayılan SSH portunu değiştirin — 22 numaralı porttan uzaklaşmak, otomatik kaba kuvvet girişimlerini önemli ölçüde azaltır
    3. fail2ban kullanın — Kimlik doğrulamada tekrar tekrar başarısız olan IP’leri otomatik olarak yasaklar
    4. SSH erişimini IP’ye göre kısıtlayın — Bağlanabilecekleri sınırlamak için güvenlik duvarı kuralları veya AllowUsers yönergeleri kullanın
    5. SSH’yi güncel tutun — Bilinen güvenlik açıklarını yamalamak için OpenSSH’yi düzenli olarak güncelleyin
    6. Güçlü anahtar algoritmaları kullanın — Eski ve zayıf algoritmalar yerine ed25519 veya rsa-4096 tercih edin
    7. Web uygulamalarınızı güvence altına alın — SSH güvenliğini, web hizmetlerinize giden tüm trafiği şifrelemek için bir SSL Sertifikası ile eşleştirin

    Sıkça Sorulan Sorular

    SCP ile SFTP arasındaki fark nedir?

    SCP, hızlı, tek komutlu dosya aktarımları için tasarlanmış etkileşimsiz bir komut satırı aracıdır. SFTP ise oturum tabanlı bir arayüzde dosyalara göz atmanıza, yönetmenize, yüklemenize ve indirmenize olanak tanıyan etkileşimli bir protokoldür. Her ikisi de şifreleme için SSH kullanır.

    rsync’i SSH olmadan kullanabilir miyim?

    Evet — rsync’in SSH olmadan çalışan kendi arka plan programı modu vardır, ancak daha az güvenlidir. İnternete açık herhangi bir aktarım için her zaman SSH üzerinden rsync kullanın (rsync -e ssh).

    Sunucum standart dışı bir SSH portu kullanıyorsa dosyaları nasıl aktarırım?

    SCP ile -P bayrağını (scp -P 2222) veya rsync ile -e "ssh -p 2222" seçeneğini kullanın. SFTP için sftp -P 2222 kullanın.

    SCP kullanımdan kaldırıldı mı?

    OpenSSH geliştiricileri, SCP’nin temel protokolünün sınırlamaları olduğunu belirtmiş ve yeni iş akışları için SFTP veya rsync kullanılmasını önermektedir. Ancak SCP, neredeyse tüm sistemlerde yaygın olarak kullanılabilir ve işlevsel olmaya devam etmektedir.

    Sonuç

    SSH tabanlı dosya aktarımında uzmanlaşmak, sunucu yöneten, uygulama dağıtan veya uzak altyapıyı sürdüren herkes için temel bir beceridir. Her aracın kendine özgü bir yeri vardır:

    • SCP, hızlı, basit, tek seferlik aktarımlar için başvuracağınız araçtır
    • rsync, yedeklemeler, dağıtımlar ve büyük veri kümelerinin verimli senkronizasyonu için vazgeçilmezdir
    • SFTP, anında dosyalara göz atmanız ve yönetmeniz gereken etkileşimli oturumlarda üstündür

    Bu araçları SSH anahtar kimlik doğrulaması ve sağlam güvenlik uygulamalarıyla birleştirmek, tek bir Shared Web Hosting hesabından Dedicated Server‘lar üzerindeki karmaşık çok sunuculu mimarilere kadar ölçeklenen sağlam, otomatik ve güvenli bir dosya aktarımı iş akışı sunar.

    Bu becerileri pratikte uygulamak için güvenilir, yüksek performanslı bir barındırma ortamı arıyorsanız, tam kök erişimi, SSD depolama ve kurumsal düzeyde ağ bağlantısı talep eden geliştiriciler ve sistem yöneticileri için tasarlanmış AlexHost’un VPS Hosting planlarını inceleyin.

    15%

    Tüm Hosting Hizmetlerinde %15 indirim

    Becerilerini test et ve herhangi bir hosting planında İndirim kazan

    Kodu kullanın:

    Skills
    Başlayın