Dosya aktarımı çoğu zaman önemsiz bir detay gibi değerlendirilir. Oysa yanlış protokol kullanımı, sunucu güvenliğini doğrudan zayıflatan ciddi açıklar oluşturabilir. İnternet üzerinden erişilen Linux ve Windows sunucularda aktarım yöntemi, kullanıcı bilgilerinin korunması açısından belirleyici bir faktördür.
FTP yaygın kullanımına rağmen şifreleme mekanizması sunmadığı için güvenli bir çözüm değildir. FTP üzerinden yapılan dosya aktarımında kullanıcı adı, parola ve dosya içeriği ağ üzerinde düz metin olarak iletilir.

SSH Üzerinden Güvenli Dosya Aktarımı Nedir?
SFTP, dosya aktarımını SSH protokolü üzerinden gerçekleştiren güvenli bir transfer yöntemidir. FTP’ye kıyasla en büyük farkı, bağlantı sırasında kullanılan tüm kimlik bilgilerinin ve aktarılan dosyaların şifrelenmiş şekilde iletilmesidir.
SFTP, ayrı bir servis olarak kurulmaz. Sunucuda SSH servisi çalışıyorsa SFTP doğrudan kullanılabilir. Varsayılan olarak TCP 22 portunu kullanır ve ek port yapılandırması gerektirmez.
FTP, FTPS ve SFTP Arasındaki Yapısal Farklar
FTP protokolü, kullanıcı bilgileri ve dosya içeriğini ağ üzerinden açık metin hâlinde taşır. Bu yaklaşım, özellikle internet bağlantıları üzerinden yapılan aktarımlarda ciddi bir güvenlik zafiyeti oluşturur.
FTPS, SSL/TLS desteği ile bu sorunu kısmen çözer ancak ek portlar, sertifikalar ve firewall kuralları gerektirir. SFTP ise doğrudan SSH altyapısı üzerinden çalıştığı için hem yönetimi daha kolaydır hem de güvenlik seviyesi daha yüksektir.
SFTP’nin Öne Çıktığı Kullanım Alanları
SFTP, yalnızca dosya yükleme ve indirme işlemleriyle sınırlı değildir. Güvenli bağlantı yapısı sayesinde dosya yönetimi ve erişim kontrolü açısından önemli avantajlar sunar.
- Web sunucularında uygulama dosyaları ve içerik güncellemeleri yapılırken
- Veritabanı yedekleri ile log dosyalarının uzak sistemlerden güvenli şekilde çekilmesi gerektiğinde
- Kurumsal altyapılarda kullanıcılara yalnızca belirli dizinlere erişim tanımlanırken
- Otomasyon ve script tabanlı dosya aktarım süreçlerinde
- Veri merkezi ve barındırma ortamlarında müşteri dizinlerinin yönetimi sağlanırken
SFTP Bağlantısı İçin Gerekli Altyapı ve Gereksinimler
SFTP üzerinden bağlantı kurulabilmesi için hem sunucu hem de istemci tarafında belirli altyapı koşullarının hazır olması gerekir.
Sunucu tarafında
- SSH servisi çalışır durumda olmalıdır
- SSH portu varsayılan 22 olacak şekilde erişilebilir olmalıdır
- Kullanıcı hesabı oluşturulmuş ve dosya izinleri doğru şekilde tanımlanmış olmalıdır
İstemci tarafında
- Linux, macOS veya Windows işletim sistemi (PowerShell / OpenSSH destekli)
- Terminal erişimi veya SFTP protokolünü destekleyen bir istemci
SFTP’nin Çalışabilmesi İçin SSH Altyapısının Önemi
SFTP bağımsız bir servis değildir. Arka planda SSH çalışmıyorsa SFTP de çalışmaz. Çoğu dağıtımda SSH varsayılan olarak yüklü gelse de minimal kurulumlarda manuel kurulum gerekebilir. Ubuntu ve Debian tabanlı sistemlerde openssh-server paketi kurulduktan sonra servis aktif hâle getirilir. RHEL tabanlı sistemlerde ise aynı paket dnf üzerinden sağlanır.
SSH servisinin aktif olup olmadığı aşağıdaki komutla kontrol edilebilir.
ss -tlnp | grep sshTerminal Üzerinden SFTP Bağlantısı Kurma
Linux, macOS veya Windows üzerinden ek bir yazılım indirmeden bu yöntemi kullanabilirsiniz.
Terminali açalım ve şu komutu girelim sftp kullanici_adi@sunucu_ip_adresi
Bağlantı kurulduğunda sizden şifre istenecektir. Bağlandıktan sonra komut istemi sftp> şekline döner.
sftp -P 2222 admin@203.0.113.10⚠️Önemli Hatırlatma Eğer sunucunuz güvenlik nedeniyle varsayılan 22 portu yerine özel bir port mesela 4444 kullanıyorsa, komutu şu şekilde revize etmelisiniz.
sftp -oPort=4444 kullanici_adi@sunucu_ip_adresi
Temel SFTP Komutları
| İşlem | Uzak Sunucu (Remote) | Yerel Makine (Local) |
| Mevcut Dizini Göster | pwd | lpwd |
| Dosyaları Listele | ls | lls |
| Dizin Değiştir | cd | lcd |
| Klasör Oluştur | mkdir | lmkdir |
SFTP Ortamında Lokal ve Uzak Dizin Mantığı
SFTP oturumu sırasında hem lokal bilgisayar hem de uzak sunucu ile aynı anda çalışılır. Bu iki tarafı ayırt etmek için kullanılan komutlar farklıdır. Uzak sunucudaki dizini görmek için pwd, lokal bilgisayardaki dizini görmek için lpwd kullanılır. Benzer şekilde ls uzak sunucudaki dosyaları, lls ise lokal dosyaları listeler.
Uzak dizin değiştirmek için
cd /<strong>var</strong>/www/htmlLokal dizin değiştirmek için
lcd /home/user/projects☝️İpucu: ls -la komutunu kullanarak gizli dosyaları ve detaylı izin yetkilerini rwx olarak görebilirsiniz. Bu, özellikle .htaccess veya .env gibi kritik dosyalarla çalışırken fark yaratır.
Profesyonel SFTP Bağlantı Senaryoları
SFTP bağlantısı her zaman IP yaz bağlan kadar basit olmayabilir. Farklı güvenlik ve ağ senaryoları için parametreler bilinmelidir.
Standart Bağlantı
sftp kullanici_adi@sunucu_ipÖzel Port Kullanımı
SSH portu değiştirildiyse büyük P parametresi kullanılır.
sftp -P 2222 kullanici_adi@sunucu_ipKeep-Alive ile Kararlı Bağlantı
Uzun süreli bağlantılarda kopmaları önlemek için
sftp -o "ServerAliveInterval=60" kullanici_adi@sunucu_ipSunucuya Dosya Yükleme
Kendi bilgisayarınızdaki bir dosyayı sunucuya aktarmak için
put yerel_dosya.txtAynı şekilde klasör yüklemek için de -r kullanılır
put -r yerel_klasor_adiSunucudan Dosya İndirme
Uzak sunucudaki bir dosyayı kendi bilgisayarınıza indirmek için,
get uzak_dosya.txtEğer dosyanın ismini inerken değiştirmek isterseniz
get uzak_dosya.txt yeni_isim.txtBir dizini içindeki her şeyle birlikte indirmek için -r (recursive) kullanalım
<code>get -r uzak_klasor_adi</code>SFTP Üzerinden Temel Dosya Yönetimi
SFTP yalnızca dosya transferi için değil, temel dosya yönetim işlemleri için de kullanılabilir. Sunucudan dosya silmek için rm, klasör oluşturmak için mkdir, boş klasör silmek için ise rmdir komutları kullanılır.
SSH Key ile Daha Güvenli SFTP Kullanımı
Parola tabanlı SSH bağlantıları brute-force saldırılarına daha açıktır. Bu nedenle üretim ortamlarında SSH key kullanımı önerilir. SFTP de SSH altyapısını kullandığı için aynı yöntem geçerlidir.
SSH anahtarı oluşturmak için,
ssh-keygen -t ed25519Oluşturulan public key’i sunucuya eklemek için,
ssh-copy-id kullanici@sunucu_ipBu işlemden sonra SFTP bağlantısı parola sorulmadan kurulabilir.
sftp kullanici@sunucu_ipSık Sorulan Sorular
SFTP kullanıcıları neden shell erişimi olmadan çalıştırılır?
Üretim ortamlarında SFTP kullanıcılarına shell erişimi vermek ciddi bir güvenlik riskidir. internal-sftp kullanılarak shell erişimi kapatılır ve kullanıcı yalnızca dosya transferi yapabilir
SFTP bağlantısı neden “Permission denied” hatası verir?
Bu hata çoğunlukla kullanıcının hedef dizin üzerinde yazma yetkisi olmamasından kaynaklanır. SFTP, SSH yetkilerini birebir kullandığı için çözüm SFTP tarafında değil, sunucu tarafında chown ve chmod ile dizin sahipliği ve izinlerinin doğru şekilde tanımlanmasıdır.
SFTP bağlantısı hangi port üzerinden çalışır?
SFTP varsayılan olarak SSH ile aynı portu, yani 22/TCP kullanır. Güvenlik amacıyla SSH portu değiştirildiyse, SFTP bağlantısı da aynı port üzerinden gerçekleştirilir.
SFTP ile FTP arasındaki fark nedir?
SFTP, dosya aktarımını SSH üzerinden şifreli olarak gerçekleştirir. FTP ise kullanıcı bilgileri ve dosyaları düz metin olarak iletir. Bu nedenle SFTP, özellikle internet üzerinden erişilen sunucularda FTP’ye kıyasla çok daha güvenlidir.