VPS.TC
| $
Sunucu Durumu
Turkey İstanbul, Türkiye
Aktif
USA New York, ABD
Aktif
Sepet Toplamı:
Sepeti Görüntüle
FTP Nedir? Dosya Transfer Protokolü Nasıl Çalışır?
Nedir?

FTP Nedir? Dosya Transfer Protokolü Nasıl Çalışır?

Defne avatarı Defne Eylül 9, 2026 10 dk okuma 0 Yorumlar
Paylaş:

FTP nedir ve ne işe yarar?

FTP, dosyaları bir istemci ile sunucu arasında taşımak için kullanılan, kontrol bağlantısı ile veri bağlantısını ayıran bir ağ protokolüdür. Genellikle TCP 21 numaralı port üzerinden oturum kurar; dosya listesi, indirme ve yükleme sırasında ayrıca veri bağlantısı açar. FTP kimlik doğrulama desteklese de varsayılan hâliyle verileri şifrelemez.

FTP açılımı File Transfer Protocol, yani Dosya Transfer Protokolü şeklindedir. İlk tasarımı oldukça eskiye dayanır. Buna rağmen web sitelerinin dosyalarını sunucuya aktarmak, eski uygulamalardan dosya almak veya kontrollü bir dosya paylaşım akışı kurmak için hâlâ karşımıza çıkar.

🚀 VPS Sunucu ile Hızınızı Artırın!

Yüksek performanslı SSD depolama ve %99.9 uptime garantisi ile projelerinizi hızlandırın.

Hemen Başla

Buradaki kritik ayrım şu: FTP bir depolama hizmeti değildir. Dosyanın nerede tutulacağını, hangi kullanıcının erişeceğini ve bağlantının nasıl korunacağını FTP sunucusu ile işletim sistemi belirler. Protokol, istemci ile sunucu arasındaki konuşmanın kurallarını tanımlar.

FTP bağlantısı nasıl çalışır?

FTP oturumunda tek bir bağlantı varmış gibi görünür, fakat protokol iki farklı bağlantı kullanır. Biri komutları taşır, diğeri gerçek dosya verisini. FTP’nin güvenlik duvarı ve NAT arkasında neden zaman zaman sorun çıkardığını anlamak için bu ayrım yeterince önemlidir.

Kontrol bağlantısı

İstemci, sunucunun TCP 21 numaralı portuna bağlanır. Kullanıcı adı, parola, çalışma dizini değişikliği, dosya listeleme talebi ve transferin başlayıp bitmesiyle ilgili komutlar bu kanal üzerinden gider. RFC 959, FTP komutlarının ve yanıt kodlarının temel davranışını tanımlar.

☁️ Cloud Sunucu ile Esneklik Kazanın!

Ölçeklenebilir kaynaklar ve anlık yedekleme ile bulutun gücünü deneyimleyin.

Keşfet

Sunucu, çoğu komuta üç haneli yanıt kodlarıyla karşılık verir. Örneğin 220 sunucunun bağlantıya hazır olduğunu, 230 kimlik doğrulamanın başarılı olduğunu, 530 ise oturum açmanın başarısız olduğunu ifade eder. İstemci arayüzünde yalnızca genel bir hata görseniz bile bu kodlar log incelemesinde işe yarar.

Veri bağlantısı

Dosya içeriği, dizin listesi ve bazı durumlarda aktarım durumuyla ilgili bilgiler ayrı veri bağlantısından geçer. Bu bağlantının nasıl kurulacağı, FTP’nin aktif veya pasif modda çalışmasına göre değişir.

  • Aktif FTP: İstemci, sunucuya kendi hangi portundan veri bağlantısı beklediğini bildirir. Sunucu bu bağlantıyı istemcinin adresine doğru açar.
  • Pasif FTP: İstemci, sunucudan kullanılacak veri portunu ister ve bu porta kendisi bağlanır. NAT ve istemci tarafı güvenlik duvarları açısından genellikle daha sorunsuz yöntem budur.

Aktif modda klasik kullanımda sunucu tarafı TCP 20 kaynak portunu kullanabilir. Bunu her durumda değişmez bir kural gibi ele almak doğru değildir; FTP’nin PORT ve EPRT komutlarıyla belirlenen bağlantı davranışı, istemci ve sunucu uygulamasına göre değişebilir. Pasif modda ise sunucu, yapılandırılmış bir port aralığından boş bir port seçer.

Aktif ve pasif FTP arasındaki fark nedir?

Özellik Aktif FTP Pasif FTP
Veri bağlantısını kim başlatır? Sunucu, istemcinin bildirdiği adrese bağlanır. İstemci, sunucunun bildirdiği porta bağlanır.
İstemci güvenlik duvarı Gelen bağlantı gerektiği için sorun çıkarabilir. Çoğu ağda daha kolay çalışır.
Sunucu güvenlik duvarı TCP 21 ve veri bağlantısı için uygun yapı gerekir. TCP 21 yanında pasif port aralığı açılmalıdır.
NAT arkasında kullanım İstemcinin adresi yanlış bildirilebilir. Genellikle daha uyumludur; sunucunun dış adresi ve port aralığı doğru tanımlanmalıdır.

Pasif mod bütün problemleri kendiliğinden çözmez. Bir VPS üzerinde FTP sunucusu çalıştırıyorsanız kontrol portunu açıp pasif port aralığını unutmak yaygın bir hatadır. İstemci giriş yapar, dizine kadar ulaşır, ardından directory listing failed benzeri bir hata verir. Kullanıcı parolasını değiştirmek burada hiçbir şeyi düzeltmez; veri bağlantısının geçeceği yol kapalıdır.

FTP, FTPS ve SFTP aynı şey mi?

Hayır. İsimler birbirine yakın olsa da çalışma biçimleri farklıdır. FTP’nin üzerine TLS şifrelemesi eklenmiş hâline FTPS, SSH üzerinden dosya aktarımı yapan protokole ise SFTP denir.

Protokol Temel yapı Yaygın bağlantı noktası Şifreleme
FTP FTP kontrol ve veri bağlantıları TCP 21, veri için ek bağlantı Varsayılan olarak yok
FTPS FTP artı TLS TCP 21 veya örtük kullanımda TCP 990 TLS ile sağlanır
SFTP SSH alt sistemi TCP 22 SSH ile sağlanır

FTPS, FTP komutlarını ve dosya verisini TLS ile koruyabilir. RFC 4217, FTP’nin TLS ile güvenli şekilde kullanılmasını tanımlar. Bağlantı türünü özellikle kontrol etmek gerekir: açık bağlantıdan sonra TLS’ye geçen explicit FTPS ile bağlantının başından itibaren TLS kullanan implicit FTPS aynı yapılandırma değildir.

SFTP, FTP’nin şifrelenmiş sürümü değildir. SSH oturumu içinde çalışan ayrı bir protokoldür. Sunucuda SSH erişiminiz varsa çoğu Linux VPS senaryosunda SFTP daha sade bir tercih olur; tek bir TCP bağlantısı kullanması da güvenlik duvarı kurallarını kolaylaştırır.

FTP sunucusunu ilk kez kendi test VPS’ime kurduğumda TCP 21’i güvenlik duvarında açıp pasif port aralığını tanımlamayı unutmuştum. Giriş başarılıydı, fakat dizin listeleme isteği her seferinde zaman aşımına uğruyordu. Sorunun parola olmadığını istemci logundaki pasif portu görüp anladım; aralığı açınca bağlantı düzeldi. FTP’de kontrol bağlantısının çalışması, dosya transferinin de çalışacağı anlamına gelmiyor.

VPS güvenliğiyle ilgili temel çerçeve için İnternet Protokolleri: TCP/IP’den HTTP/3’e Derinlemesine Bakış başlıklı yazımızda bağlantıların katmanlar arasındaki yerini de görebilirsiniz.

FTP ile dosya nasıl indirilir ve yüklenir?

Grafik istemciler sunucu adresini, kullanıcıyı, parolayı ve bağlantı türünü alanlara bölerek gösterir. Komut satırında ise işlemin arka planını daha açık görürsünüz. Debian ve Ubuntu gibi sistemlerde temel FTP istemcisini kurmak için şu komut kullanılabilir:

sudo apt update
sudo apt install ftp

Bu istemci basit testler için yeterlidir. Üretim işlerinde ben genellikle daha gelişmiş seçenekleri olan lftp kullanıyorum.

sudo apt install lftp
lftp ftp.example.com
user dosya_kullanici
ls
get rapor.zip -o /tmp/rapor.zip
bye

user komutundan sonra istemci parolayı etkileşimli olarak sorar; parolayı komut satırına yazmamak iyi bir alışkanlıktır. get uzak dosyayı yerel makineye indirir, -o ise yerel hedef yolunu belirtir.

Yükleme için put kullanabilirsiniz:

lftp ftp.example.com
user dosya_kullanici
put ./build/site.zip -o /incoming/site.zip
bye

Burada yerel dosya ./build/site.zip, uzak sunucudaki /incoming/site.zip yoluna gönderilir. Uzak dizindeki yazma izinleri, kota ve sunucunun dosya adı kuralları nedeniyle işlem başarısız olabilir.

Bir klasörün tamamını taşımak gerektiğinde mirror komutu kullanışlıdır:

lftp ftp.example.com
user dosya_kullanici
mirror --verbose ./site /incoming/site
bye

Bu komut yerel ./site klasörünü uzak tarafta /incoming/site konumuna gönderir. Tersi yönde indirme yapmak için mirror --verbose /remote/site ./site yazılır. Büyük bir dizinde önce küçük bir test klasörüyle deneme yaparım; FTP istemcisinin bir seçeneğini yanlış anlamak, beklenenden fazla dosyanın üzerine yazılmasına neden olabilir.

Pasif modu açıkça kullanmak

İstemci pasif moda geçmiyorsa bunu oturum içinde belirtebilirsiniz:

lftp ftp.example.com
set ftp:passive-mode true
user dosya_kullanici
ls
bye

Bu satırdaki true değeri istemciye veri bağlantısını sunucuya doğru kendisinin açmasını söyler. Bağlantı hâlâ kurulmuyorsa sunucunun pasif port aralığı, NAT dış adresi ve güvenlik duvarı kuralları birlikte kontrol edilmelidir.

Alternatif olarak curl ile tek dosya indirebilir veya yükleyebilirsiniz:

curl --ftp-pasv -u dosya_kullanici ftp://ftp.example.com/rapor.zip -o /tmp/rapor.zip
curl --ftp-pasv -u dosya_kullanici --upload-file ./site.zip ftp://ftp.example.com/incoming/site.zip

-u seçeneğinde yalnızca kullanıcı adını verirseniz curl parolayı etkileşimli olarak ister. Otomatik işlerde parola saklama biçimine ayrıca dikkat edin; shell geçmişi, süreç listesi ve CI/CD logları istemeden kimlik bilgisi sızdırabilir.

FTP kullanırken güvenlik açısından nelere dikkat edilmeli?

FTP’nin temel sorunu yalnızca eski olması değil, varsayılan güvenlik modelinin bugünkü beklentilere uymamasıdır. Normal FTP’de kullanıcı adı, parola ve transfer edilen dosya içeriği ağ üzerinde şifrelenmeden taşınabilir. Aynı ağdaki kötü niyetli bir gözlemci bu trafiği yakalayabilir.

  • Normal FTP’yi hassas veriler için kullanmayın. Yedekler, müşteri verileri, yapılandırma dosyaları ve parolalar düz metin bağlantıyla taşınmamalıdır.
  • SFTP veya FTPS tercih edin. Hangi seçeneğin kullanılacağı sağlayıcının desteklediği protokole ve mevcut istemci altyapısına bağlıdır.
  • İsimli, sınırlı yetkili kullanıcı oluşturun. Dosya transferi için kullanılan hesabın gereksiz biçimde root yetkisine sahip olması kabul edilebilir bir çözüm değildir.
  • Kök dizini sınırlandırın. FTP kullanıcısının sistemin tamamını gezememesi için chroot veya uygulamanın sunduğu izolasyon seçeneklerini değerlendirin.
  • Pasif port aralığını daraltın. Sunucuda geniş ve rastgele bir port aralığını internete açmak yerine ihtiyaca uygun bir aralık belirleyip yalnızca onu izinli hâle getirin.
  • Logları izleyin. Başarısız girişler, olağan dışı saatlerdeki transferler ve kısa sürede çok sayıda dosya isteği incelenmelidir.
  • Parolaları benzersiz tutun. Mümkünse parola yerine SSH anahtarı kullanan SFTP akışına geçin.

FTP hesabını web sitesinin document root dizinine bağlamak da dikkat ister. Hesabın yazabildiği dizinde çalıştırılabilir bir dosyanın web üzerinden erişilebilir hâle gelmesi, yalnızca dosya aktarımı problemi olmaktan çıkar. Yüklenen dosyanın uzantısı, MIME türü, sahipliği ve web sunucusunun çalıştırma kuralları birlikte değerlendirilmelidir.

Bir FTP sunucusunu internete açmadan önce ağ akışını açıkça yazmak faydalı olur:

  1. İstemci hangi adrese ve kontrol portuna bağlanacak?
  2. Aktif mi, pasif mi bağlantı kullanılacak?
  3. Pasif mod için hangi TCP port aralığı açılacak?
  4. Sunucu NAT arkasındaysa dış IP adresi FTP yapılandırmasına işlendi mi?
  5. Hangi kullanıcı hangi yerel dizine erişebilecek?
  6. Transfer logları ne kadar süre saklanacak?

Bu soruların cevabı yoksa port açmak yapılandırma sayılmaz; yalnızca bir sonraki arızanın yerini değiştirir. Ben özellikle NAT arkasındaki test sunucularında önce istemci logunu, sonra sunucunun bağlantı logunu, en son güvenlik duvarı sayaçlarını kontrol ederim.

FTP bağlantı sorunları nasıl çözülür?

FTP hatalarının önemli bölümü yanlış parola yüzünden çıkmaz. Yanlış mod, kapalı pasif portlar, dış IP’nin hatalı tanımlanması ve kullanıcı dizini izinleri daha sık karşıma çıkar.

Giriş başarılı, dizin listesi alınamıyor

Bu belirti kontrol bağlantısının çalıştığını, veri bağlantısının ise kurulamadığını gösterir. İstemci logunda Entering Passive Mode veya 227 yanıtını arayın. Yanıtta özel ağ adresi görünüyorsa sunucu NAT arkasında olabilir; dışarıdan bağlanan istemciye ulaşılabilir bir adres verilmelidir.

Sunucu tarafında şu kontroller yapılabilir:

sudo ss -ltnp
sudo nft list ruleset
sudo journalctl -u vsftpd --since today

ss dinleyen TCP portlarını, nft güvenlik duvarı kurallarını, journalctl ise servis loglarını gösterir. Çıktıda yalnızca TCP 21’i görmek pasif veri portlarının doğru çalıştığını kanıtlamaz; transfer anında ilgili portun açıldığını veya dinlendiğini ayrıca kontrol etmek gerekir.

530 Login incorrect hatası

Bu yanıt kullanıcı adı veya parolanın hatalı olduğunu gösterebilir, fakat hesap politikaları da aynı sonuca yol açabilir. Kullanıcının kabuğu, hesabın kilitli olup olmadığı, erişim dizininin varlığı ve FTP sunucusunun kullanıcı listesi kontrol edilmelidir. Başarısız denemeleri artırmadan önce sunucu loguna bakın.

Dosya aktarımı yarıda kesiliyor

Dosya boyutu, bağlantı zaman aşımı, disk kotası veya aradaki ağ cihazının idle timeout değeri etkili olabilir. Sunucunun diskini df -h ile, inode durumunu df -i ile kontrol edin. Bir VPS’te yalnızca disk kapasitesine bakıp inode’ların tükendiğini gözden kaçırmıştım; küçük dosyalarla dolan bir dizin yüzünden yeni transferler başarısız oluyordu.

df -h
df -i
ncdu /var

ncdu, hangi dizinin alanı tükettiğini hızlıca görmenizi sağlar. Büyük bir transferi tekrar tekrar başlatmadan önce hem disk alanını hem de dosya sisteminin inode durumunu kontrol etmek zaman kazandırır.

FTP hangi durumlarda tercih edilebilir?

FTP’yi tamamen yok saymak yerine kullanım bağlamına bakmak gerekir. Eski bir uygulama yalnızca FTP ile entegrasyon sağlıyor olabilir, bir müşterinin hosting paneli FTPS sunuyor olabilir veya harici bir sistemin teslim protokolü FTP olarak tanımlanmış olabilir. Protokolü değiştiremiyorsanız bağlantıyı izole etmek, erişim listesini daraltmak ve mümkünse TLS kullanmak gerekir.

Yeni bir Linux sunucusu kuruyorsanız ilk tercihim SFTP olur. SSH zaten yönetim için kullanılıyorsa ek bir FTP daemon’ı çalıştırmadan dosya aktarımı yapılabilir. Web sitesi dağıtımında ise Git tabanlı dağıtım, CI/CD veya sağlayıcının güvenli dosya aktarımı seçeneği daha kontrollü bir akış sunabilir.

FTP ile web sunucusunun HTTP trafiğini birbirine karıştırmamak gerekir. FTP’den dosya yüklemek, dosyanın tarayıcıdan güvenli biçimde servis edileceği anlamına gelmez. HTTPS sertifikası ve web sunucusu tarafındaki ayarlar ayrı konudur; VPS’te SSL Sertifikası Kurulumu: Let’s Encrypt Rehberi başlıklı içerikte bu ayrımın web tarafını ele almıştık.

Dosya transferi sırasında bant genişliğini de hesaba katın. Büyük yedekleri mesai saatlerinde FTP ile taşımak, aynı VPS üzerindeki web uygulamasının yanıt sürelerini etkileyebilir. Trafik planlaması yaparken VPS Bant Genişliği Nedir? İhtiyacınızı Hesaplayın konusundaki ölçüm yaklaşımı işinize yarar.

Sık Sorulan Sorular

FTP güvenli midir?

Normal FTP, kullanıcı adı, parola ve dosya içeriğini şifrelemediği için güvenli kabul edilmez. Hassas verilerde SFTP veya TLS kullanan FTPS tercih edilmeli, erişim yetkileri ve loglar ayrıca sınırlandırılmalıdır.

FTP için hangi port açılır?

Kontrol bağlantısı için çoğunlukla TCP 21 kullanılır. Pasif FTP’de sunucunun yapılandırdığı veri port aralığı da güvenlik duvarında izinli olmalıdır; yalnızca TCP 21’i açmak çoğu pasif bağlantı için yeterli değildir.

FTP ile SFTP arasındaki temel fark nedir?

FTP, kendi kontrol ve veri bağlantılarını kullanan bir dosya transfer protokolüdür. SFTP ise SSH üzerinden çalışan ayrı bir protokoldür ve genellikle TCP 22 üzerinde tek bağlantıyla ilerler.

FTP istemcisinde pasif mod ne zaman kullanılmalı?

İstemci NAT veya güvenlik duvarı arkasındaysa pasif mod genellikle daha kolay çalışır; çünkü veri bağlantısını istemci başlatır. Yine de sunucuda pasif port aralığı ve dış IP doğru yapılandırılmamışsa pasif mod bağlantıyı tek başına çözmez.

Kaynaklar

Defne avatarı
Yazar

Defne

vps.tc blog yazarı. Sistem yönetimi, Linux ve hosting dünyası üzerine yazıyor.