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
rsyncgibi 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/destinationAçı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 sshdufw status veya iptables -LAktarım Hızı Yavaş
- Sıkıştırmayı etkinleştirin: SCP için
-Cveya rsync için-zekleyin - 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
--bwlimitilersynckullanmayı 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
| Özellik | SCP | rsync | SFTP |
|---|---|---|---|
| Kullanım kolaylığı | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| Delta aktarımları | ❌ | ✅ | ❌ |
| Dizin senkronizasyonu | ✅ (özyinelemeli) | ✅ (--delete ile) | ✅ (manuel) |
| Etkileşimli mod | ❌ | ❌ | ✅ |
| Otomasyon | ✅ | ✅ | ✅ (betiklerle) |
| Bant genişliği verimliliği | Düşük | Yüksek | Düşük |
| En iyi kullanım | Hızlı tek seferlik aktarımlar | Yedekleme ve senkronizasyon | Etkileş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:
- Şifre kimlik doğrulamasını devre dışı bırakın — Yalnızca SSH anahtarlarını kullanın ve
/etc/ssh/sshd_configiçindePasswordAuthentication noayarlayın - Varsayılan SSH portunu değiştirin — 22 numaralı porttan uzaklaşmak, otomatik kaba kuvvet girişimlerini önemli ölçüde azaltır
fail2bankullanın — Kimlik doğrulamada tekrar tekrar başarısız olan IP’leri otomatik olarak yasaklar- SSH erişimini IP’ye göre kısıtlayın — Bağlanabilecekleri sınırlamak için güvenlik duvarı kuralları veya
AllowUsersyönergeleri kullanın - SSH’yi güncel tutun — Bilinen güvenlik açıklarını yamalamak için OpenSSH’yi düzenli olarak güncelleyin
- Güçlü anahtar algoritmaları kullanın — Eski ve zayıf algoritmalar yerine
ed25519veyarsa-4096tercih edin - 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.
