Skip to content

SCP: Güvenli Dosya Transferinin Klasiği

Published: at 10:00 AMSuggest an edit

Merhaba arkadaşlar! Bugün sizlerle network üzerinden güvenli dosya transferinin klasiklerinden SCP (Secure Copy Protocol) hakkında konuşacağız. Eğer Linux sunucularla çalışıyorsanız, bu tool’u mutlaka bilmeniz gerekiyor.

SCP Nedir ve Neden Önemlidir?

SCP, SSH protokolü üzerinden çalışan bir dosya transfer aracı. Yani SSH bağlantısı kurabildiğiniz her yere dosya gönderip alabilirsiniz. En güzel yanı? Tüm transfer SSH tüneli içinden geçtiği için şifrelenmiş oluyor. Network’te dinleyen biri dosyalarınızı göremiyor.

FTP’yi düşünün - kullanıcı adı, şifre, dosya içeriği… hepsi açık metin olarak gidiyor. SCP ise SSH’ın güvenlik katmanını kullanıyor. Port 22 üzerinden, şifrelenmiş, güvenli.

Temel Mantık Nasıl Çalışır?

SCP aslında arka planda SSH connection açıyor ve bu connection üzerinden dosyaları stream ediyor. İki tarafta da SSH daemon çalışması gerekiyor. Bağlantı kurulduktan sonra, kaynak makinedeki dosya okunup, hedef makineye yazılıyor.

İlginç olan şu: SCP hem local’den remote’a, hem remote’tan local’e, hem de remote’tan remote’a kopyalama yapabiliyor! Evet, iki uzak sunucu arasında direkt transfer yapabiliyorsunuz, kendi makinenize indirip tekrar yüklemenize gerek yok.

Kimlik Doğrulama

SCP, SSH’ın kimlik doğrulama mekanizmalarını kullanıyor:

En pratik ve güvenli yöntem SSH key kullanmak. Bir kere ayarlayınca, şifre girmeden transfer yapabiliyorsunuz.

Basit Kullanım Örnekleri

Local’den remote’a dosya göndermek:

# Single file transfer
scp /home/user/document.pdf user@192.168.1.100:/home/user/documents/

# Multiple files
scp file1.txt file2.txt user@server.com:/backup/

# Different port (not default 22)
scp -P 2222 data.zip admin@server.com:/tmp/

Remote’tan local’e dosya almak:

# Download single file
scp user@server.com:/var/log/app.log ./logs/

# Download with absolute path
scp root@192.168.1.50:/etc/nginx/nginx.conf ~/configs/

# Using SSH key
scp -i ~/.ssh/id_rsa user@host:/path/to/file ./

Dizin Transferi

Dizinleri kopyalamak için recursive flag kullanıyoruz:

# Upload directory
scp -r /local/folder/ user@server:/remote/path/

# Download directory
scp -r user@server:/var/www/html/ ./backup/

# Preserve file attributes (permissions, timestamps)
scp -rp project/ deploy@production:/apps/

İleri Seviye Özellikler

Compression kullanımı - Büyük dosyalarda bant genişliği tasarrufu:

# Enable compression with -C flag
scp -C large_database.sql user@backup-server:/backups/

Bandwidth limiting - Network’ü boğmamak için:

# Limit to 500 KB/s
scp -l 4000 huge_file.iso user@server:/data/
# Note: -l uses Kbit/s, so 4000 = 500 KB/s

Verbose output - Ne olup bittiğini görmek için:

# Show detailed progress
scp -v config.tar.gz admin@server:/etc/

Remote’tan Remote’a Transfer

Bu özellik harika! İki uzak sunucu arasında direkt transfer:

# Transfer between two remote hosts
scp user@source-server:/data/file.zip user@dest-server:/backup/

# Using different ports
scp -3 admin@server1:2222:/logs/app.log admin@server2:3333:/archive/

-3 flag’i transferi local makine üzerinden yapar. Bazen iki remote host birbirine erişemiyorsa kullanışlı.

Güvenlik İpuçları

SSH Key kullanın: Password authentication’dan daha güvenli. Ayrıca scriptlerde kullanmak için ideal.

Port değiştirin: Default 22 portunu değiştirmek, automated attack’leri azaltır.

IP restriction: SSH config’de sadece belirli IP’lerden bağlantıya izin verin.

Fail2ban kullanın: Brute force attack’leri engellemek için.

StrictHostKeyChecking: Man-in-the-middle attack’lere karşı:

# Always verify host key
scp -o StrictHostKeyChecking=yes file.txt user@server:/tmp/

Performance Tuning

SCP varsayılan olarak Triple-DES encryption kullanır. Daha hızlı cipher’lar var:

# Use faster cipher for large transfers
scp -c aes128-ctr large_file.img user@server:/storage/

# Modern, fast cipher
scp -c chacha20-poly1305@openssh.com database.dump user@backup:/

SCP vs Alternatifler

SCP vs SFTP: SFTP daha modern, daha fazla özellik. Interactive shell, resume support var. Ama SCP daha basit, script’lerde kullanımı kolay.

SCP vs rsync: rsync incremental transfer yapabiliyor, sadece değişen kısımları gönderiyor. Büyük backup’lar için rsync daha mantıklı.

SCP vs FTP/FTPS: FTP eski, güvensiz. FTPS karmaşık. SCP hem güvenli hem basit.

Pratik Senaryolar

Web deployment:

# Deploy web app
scp -r ./dist/* webadmin@prod-server:/var/www/html/

Database backup:

# Backup and compress on the fly
ssh user@db-server "mysqldump -u root mydb | gzip" > backup.sql.gz
# Or using scp after dump
scp user@db-server:/backups/db-$(date +%Y%m%d).sql.gz ./backups/

Log collection:

# Collect logs from multiple servers
for server in web1 web2 web3; do
  scp user@$server:/var/log/app.log ./logs/${server}-app.log
done

Sorun Giderme

Connection refused hatası? SSH service’i kontrol edin:

# Check if SSH is running
ssh user@server "systemctl status sshd"

Permission denied? Dosya izinlerini kontrol edin:

# Check permissions
ssh user@server "ls -la /path/to/file"

Yavaş transfer? Compression ve cipher ayarlarını deneyin:

# Optimize for speed
scp -C -c aes128-gcm@openssh.com large.file user@server:/

Modern Alternatifler ve Gelecek

OpenSSH ekibi SCP’nin bazı güvenlik sorunları olduğunu söylüyor ve SFTP/rsync kullanımını öneriyor. Ama SCP hala yaygın kullanımda çünkü:

Sonuç

SCP, dosya transferi için hala güvenilir bir araç. Basit, hızlı, güvenli. Özellikle script’lerde, automation’da, quick transfer’lerde vazgeçilmez.

Evet, rsync daha gelişmiş özelliklere sahip. Evet, SFTP daha modern. Ama bazen ihtiyacınız olan tek şey, A noktasından B noktasına güvenle dosya taşımak. İşte tam da bu durumlar için SCP mükemmel!

Unutmayın: En güvenli sistem, doğru kullanılan sistemdir. SSH key’lerinizi güvende tutun, gereksiz port’ları açmayın, log’larınızı kontrol edin.



Previous Post
Server-Sent Events (SSE): Basit Gerçek Zamanlı Veri Akışı
Next Post
Monad'lar: Zincirlenebilir İş Akışlarını Güvenli Kurmak