{"id":583,"date":"2026-09-09T16:53:57","date_gmt":"2026-09-09T16:53:57","guid":{"rendered":"https:\/\/www.vps.tc\/blog\/?p=583"},"modified":"2026-09-09T09:40:35","modified_gmt":"2026-09-09T09:40:35","slug":"ftp-nedir-dosya-transfer-protokolu-nasil-calisir","status":"publish","type":"post","link":"https:\/\/www.vps.tc\/blog\/tr\/ftp-nedir-dosya-transfer-protokolu-nasil-calisir\/","title":{"rendered":"FTP Nedir? Dosya Transfer Protokol\u00fc Nas\u0131l \u00c7al\u0131\u015f\u0131r?"},"content":{"rendered":"<div class=\"aiw-toc\" style=\"border:1px solid #dbe3ea;border-radius:8px;padding:16px 20px;margin:0 0 28px\"><strong>\u0130\u00e7indekiler<\/strong><\/p>\n<ol style=\"margin:10px 0 0;padding-left:22px\">\n<li><a href=\"#ftp-nedir-ve-ne-ise-yarar\">FTP nedir ve ne i\u015fe yarar?<\/a><\/li>\n<li><a href=\"#ftp-baglantisi-nasil-calisir\">FTP ba\u011flant\u0131s\u0131 nas\u0131l \u00e7al\u0131\u015f\u0131r?<\/a><\/li>\n<li><a href=\"#aktif-ve-pasif-ftp-arasindaki-fark-nedir\">Aktif ve pasif FTP aras\u0131ndaki fark nedir?<\/a><\/li>\n<li><a href=\"#ftp-ftps-ve-sftp-ayni-sey-mi\">FTP, FTPS ve SFTP ayn\u0131 \u015fey mi?<\/a><\/li>\n<li><a href=\"#ftp-ile-dosya-nasil-indirilir-ve-yuklenir\">FTP ile dosya nas\u0131l indirilir ve y\u00fcklenir?<\/a><\/li>\n<li><a href=\"#ftp-kullanirken-guvenlik-acisindan-nelere-dikkat-edilmeli\">FTP kullan\u0131rken g\u00fcvenlik a\u00e7\u0131s\u0131ndan nelere dikkat edilmeli?<\/a><\/li>\n<li><a href=\"#ftp-baglanti-sorunlari-nasil-cozulur\">FTP ba\u011flant\u0131 sorunlar\u0131 nas\u0131l \u00e7\u00f6z\u00fcl\u00fcr?<\/a><\/li>\n<li><a href=\"#ftp-hangi-durumlarda-tercih-edilebilir\">FTP hangi durumlarda tercih edilebilir?<\/a><\/li>\n<li><a href=\"#sik-sorulan-sorular\">S\u0131k Sorulan Sorular<\/a><\/li>\n<li><a href=\"#kaynaklar\">Kaynaklar<\/a><\/li>\n<\/ol>\n<\/div>\n<h2 id=\"ftp-nedir-ve-ne-ise-yarar\">FTP nedir ve ne i\u015fe yarar?<\/h2>\n<p>FTP, dosyalar\u0131 bir istemci ile sunucu aras\u0131nda ta\u015f\u0131mak i\u00e7in kullan\u0131lan, kontrol ba\u011flant\u0131s\u0131 ile veri ba\u011flant\u0131s\u0131n\u0131 ay\u0131ran bir a\u011f protokol\u00fcd\u00fcr. Genellikle TCP 21 numaral\u0131 port \u00fczerinden oturum kurar; dosya listesi, indirme ve y\u00fckleme s\u0131ras\u0131nda ayr\u0131ca veri ba\u011flant\u0131s\u0131 a\u00e7ar. FTP kimlik do\u011frulama desteklese de varsay\u0131lan h\u00e2liyle verileri \u015fifrelemez.<\/p>\n<p>FTP a\u00e7\u0131l\u0131m\u0131 <em>File Transfer Protocol<\/em>, yani Dosya Transfer Protokol\u00fc \u015feklindedir. \u0130lk tasar\u0131m\u0131 olduk\u00e7a eskiye dayan\u0131r. Buna ra\u011fmen web sitelerinin dosyalar\u0131n\u0131 sunucuya aktarmak, eski uygulamalardan dosya almak veya kontroll\u00fc bir dosya payla\u015f\u0131m ak\u0131\u015f\u0131 kurmak i\u00e7in h\u00e2l\u00e2 kar\u015f\u0131m\u0131za \u00e7\u0131kar.<\/p>\n<p>Buradaki kritik ayr\u0131m \u015fu: FTP bir depolama hizmeti de\u011fildir. Dosyan\u0131n nerede tutulaca\u011f\u0131n\u0131, hangi kullan\u0131c\u0131n\u0131n eri\u015fece\u011fini ve ba\u011flant\u0131n\u0131n nas\u0131l korunaca\u011f\u0131n\u0131 FTP sunucusu ile i\u015fletim sistemi belirler. Protokol, istemci ile sunucu aras\u0131ndaki konu\u015fman\u0131n kurallar\u0131n\u0131 tan\u0131mlar.<\/p>\n<h2 id=\"ftp-baglantisi-nasil-calisir\">FTP ba\u011flant\u0131s\u0131 nas\u0131l \u00e7al\u0131\u015f\u0131r?<\/h2>\n<p>FTP oturumunda tek bir ba\u011flant\u0131 varm\u0131\u015f gibi g\u00f6r\u00fcn\u00fcr, fakat protokol iki farkl\u0131 ba\u011flant\u0131 kullan\u0131r. Biri komutlar\u0131 ta\u015f\u0131r, di\u011feri ger\u00e7ek dosya verisini. FTP&#8217;nin g\u00fcvenlik duvar\u0131 ve NAT arkas\u0131nda neden zaman zaman sorun \u00e7\u0131kard\u0131\u011f\u0131n\u0131 anlamak i\u00e7in bu ayr\u0131m yeterince \u00f6nemlidir.<\/p>\n<h3>Kontrol ba\u011flant\u0131s\u0131<\/h3>\n<p>\u0130stemci, sunucunun TCP 21 numaral\u0131 portuna ba\u011flan\u0131r. Kullan\u0131c\u0131 ad\u0131, parola, \u00e7al\u0131\u015fma dizini de\u011fi\u015fikli\u011fi, dosya listeleme talebi ve transferin ba\u015flay\u0131p bitmesiyle ilgili komutlar bu kanal \u00fczerinden gider. RFC 959, FTP komutlar\u0131n\u0131n ve yan\u0131t kodlar\u0131n\u0131n temel davran\u0131\u015f\u0131n\u0131 tan\u0131mlar.<\/p>\n<p>Sunucu, \u00e7o\u011fu komuta \u00fc\u00e7 haneli yan\u0131t kodlar\u0131yla kar\u015f\u0131l\u0131k verir. \u00d6rne\u011fin <code>220<\/code> sunucunun ba\u011flant\u0131ya haz\u0131r oldu\u011funu, <code>230<\/code> kimlik do\u011frulaman\u0131n ba\u015far\u0131l\u0131 oldu\u011funu, <code>530<\/code> ise oturum a\u00e7man\u0131n ba\u015far\u0131s\u0131z oldu\u011funu ifade eder. \u0130stemci aray\u00fcz\u00fcnde yaln\u0131zca genel bir hata g\u00f6rseniz bile bu kodlar log incelemesinde i\u015fe yarar.<\/p>\n<h3>Veri ba\u011flant\u0131s\u0131<\/h3>\n<p>Dosya i\u00e7eri\u011fi, dizin listesi ve baz\u0131 durumlarda aktar\u0131m durumuyla ilgili bilgiler ayr\u0131 veri ba\u011flant\u0131s\u0131ndan ge\u00e7er. Bu ba\u011flant\u0131n\u0131n nas\u0131l kurulaca\u011f\u0131, FTP&#8217;nin aktif veya pasif modda \u00e7al\u0131\u015fmas\u0131na g\u00f6re de\u011fi\u015fir.<\/p>\n<ul>\n<li><strong>Aktif FTP:<\/strong> \u0130stemci, sunucuya kendi hangi portundan veri ba\u011flant\u0131s\u0131 bekledi\u011fini bildirir. Sunucu bu ba\u011flant\u0131y\u0131 istemcinin adresine do\u011fru a\u00e7ar.<\/li>\n<li><strong>Pasif FTP:<\/strong> \u0130stemci, sunucudan kullan\u0131lacak veri portunu ister ve bu porta kendisi ba\u011flan\u0131r. NAT ve istemci taraf\u0131 g\u00fcvenlik duvarlar\u0131 a\u00e7\u0131s\u0131ndan genellikle daha sorunsuz y\u00f6ntem budur.<\/li>\n<\/ul>\n<p>Aktif modda klasik kullan\u0131mda sunucu taraf\u0131 TCP 20 kaynak portunu kullanabilir. Bunu her durumda de\u011fi\u015fmez bir kural gibi ele almak do\u011fru de\u011fildir; FTP&#8217;nin <code>PORT<\/code> ve <code>EPRT<\/code> komutlar\u0131yla belirlenen ba\u011flant\u0131 davran\u0131\u015f\u0131, istemci ve sunucu uygulamas\u0131na g\u00f6re de\u011fi\u015febilir. Pasif modda ise sunucu, yap\u0131land\u0131r\u0131lm\u0131\u015f bir port aral\u0131\u011f\u0131ndan bo\u015f bir port se\u00e7er.<\/p>\n<h2 id=\"aktif-ve-pasif-ftp-arasindaki-fark-nedir\">Aktif ve pasif FTP aras\u0131ndaki fark nedir?<\/h2>\n<table>\n<thead>\n<tr>\n<th>\u00d6zellik<\/th>\n<th>Aktif FTP<\/th>\n<th>Pasif FTP<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Veri ba\u011flant\u0131s\u0131n\u0131 kim ba\u015flat\u0131r?<\/td>\n<td>Sunucu, istemcinin bildirdi\u011fi adrese ba\u011flan\u0131r.<\/td>\n<td>\u0130stemci, sunucunun bildirdi\u011fi porta ba\u011flan\u0131r.<\/td>\n<\/tr>\n<tr>\n<td>\u0130stemci g\u00fcvenlik duvar\u0131<\/td>\n<td>Gelen ba\u011flant\u0131 gerekti\u011fi i\u00e7in sorun \u00e7\u0131karabilir.<\/td>\n<td>\u00c7o\u011fu a\u011fda daha kolay \u00e7al\u0131\u015f\u0131r.<\/td>\n<\/tr>\n<tr>\n<td>Sunucu g\u00fcvenlik duvar\u0131<\/td>\n<td>TCP 21 ve veri ba\u011flant\u0131s\u0131 i\u00e7in uygun yap\u0131 gerekir.<\/td>\n<td>TCP 21 yan\u0131nda pasif port aral\u0131\u011f\u0131 a\u00e7\u0131lmal\u0131d\u0131r.<\/td>\n<\/tr>\n<tr>\n<td>NAT arkas\u0131nda kullan\u0131m<\/td>\n<td>\u0130stemcinin adresi yanl\u0131\u015f bildirilebilir.<\/td>\n<td>Genellikle daha uyumludur; sunucunun d\u0131\u015f adresi ve port aral\u0131\u011f\u0131 do\u011fru tan\u0131mlanmal\u0131d\u0131r.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Pasif mod b\u00fct\u00fcn problemleri kendili\u011finden \u00e7\u00f6zmez. Bir VPS \u00fczerinde FTP sunucusu \u00e7al\u0131\u015ft\u0131r\u0131yorsan\u0131z kontrol portunu a\u00e7\u0131p pasif port aral\u0131\u011f\u0131n\u0131 unutmak yayg\u0131n bir hatad\u0131r. \u0130stemci giri\u015f yapar, dizine kadar ula\u015f\u0131r, ard\u0131ndan <em>directory listing failed<\/em> benzeri bir hata verir. Kullan\u0131c\u0131 parolas\u0131n\u0131 de\u011fi\u015ftirmek burada hi\u00e7bir \u015feyi d\u00fczeltmez; veri ba\u011flant\u0131s\u0131n\u0131n ge\u00e7ece\u011fi yol kapal\u0131d\u0131r.<\/p>\n<h2 id=\"ftp-ftps-ve-sftp-ayni-sey-mi\">FTP, FTPS ve SFTP ayn\u0131 \u015fey mi?<\/h2>\n<p>Hay\u0131r. \u0130simler birbirine yak\u0131n olsa da \u00e7al\u0131\u015fma bi\u00e7imleri farkl\u0131d\u0131r. FTP&#8217;nin \u00fczerine TLS \u015fifrelemesi eklenmi\u015f h\u00e2line FTPS, SSH \u00fczerinden dosya aktar\u0131m\u0131 yapan protokole ise SFTP denir.<\/p>\n<table>\n<thead>\n<tr>\n<th>Protokol<\/th>\n<th>Temel yap\u0131<\/th>\n<th>Yayg\u0131n ba\u011flant\u0131 noktas\u0131<\/th>\n<th>\u015eifreleme<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>FTP<\/td>\n<td>FTP kontrol ve veri ba\u011flant\u0131lar\u0131<\/td>\n<td>TCP 21, veri i\u00e7in ek ba\u011flant\u0131<\/td>\n<td>Varsay\u0131lan olarak yok<\/td>\n<\/tr>\n<tr>\n<td>FTPS<\/td>\n<td>FTP art\u0131 TLS<\/td>\n<td>TCP 21 veya \u00f6rt\u00fck kullan\u0131mda TCP 990<\/td>\n<td>TLS ile sa\u011flan\u0131r<\/td>\n<\/tr>\n<tr>\n<td>SFTP<\/td>\n<td>SSH alt sistemi<\/td>\n<td>TCP 22<\/td>\n<td>SSH ile sa\u011flan\u0131r<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>FTPS, FTP komutlar\u0131n\u0131 ve dosya verisini TLS ile koruyabilir. RFC 4217, FTP&#8217;nin TLS ile g\u00fcvenli \u015fekilde kullan\u0131lmas\u0131n\u0131 tan\u0131mlar. Ba\u011flant\u0131 t\u00fcr\u00fcn\u00fc \u00f6zellikle kontrol etmek gerekir: a\u00e7\u0131k ba\u011flant\u0131dan sonra TLS&#8217;ye ge\u00e7en explicit FTPS ile ba\u011flant\u0131n\u0131n ba\u015f\u0131ndan itibaren TLS kullanan implicit FTPS ayn\u0131 yap\u0131land\u0131rma de\u011fildir.<\/p>\n<p>SFTP, FTP&#8217;nin \u015fifrelenmi\u015f s\u00fcr\u00fcm\u00fc de\u011fildir. SSH oturumu i\u00e7inde \u00e7al\u0131\u015fan ayr\u0131 bir protokold\u00fcr. Sunucuda SSH eri\u015fiminiz varsa \u00e7o\u011fu Linux VPS senaryosunda SFTP daha sade bir tercih olur; tek bir TCP ba\u011flant\u0131s\u0131 kullanmas\u0131 da g\u00fcvenlik duvar\u0131 kurallar\u0131n\u0131 kolayla\u015ft\u0131r\u0131r.<\/p>\n<p>FTP sunucusunu ilk kez kendi test VPS&#8217;ime kurdu\u011fumda TCP 21&#8217;i g\u00fcvenlik duvar\u0131nda a\u00e7\u0131p pasif port aral\u0131\u011f\u0131n\u0131 tan\u0131mlamay\u0131 unutmu\u015ftum. Giri\u015f ba\u015far\u0131l\u0131yd\u0131, fakat dizin listeleme iste\u011fi her seferinde zaman a\u015f\u0131m\u0131na u\u011fruyordu. Sorunun parola olmad\u0131\u011f\u0131n\u0131 istemci logundaki pasif portu g\u00f6r\u00fcp anlad\u0131m; aral\u0131\u011f\u0131 a\u00e7\u0131nca ba\u011flant\u0131 d\u00fczeldi. FTP&#8217;de kontrol ba\u011flant\u0131s\u0131n\u0131n \u00e7al\u0131\u015fmas\u0131, dosya transferinin de \u00e7al\u0131\u015faca\u011f\u0131 anlam\u0131na gelmiyor.<\/p>\n<p>VPS g\u00fcvenli\u011fiyle ilgili temel \u00e7er\u00e7eve i\u00e7in <a href=\"https:\/\/www.vps.tc\/blog\/tr\/internet-protokolleri-tcp-ipden-http-3e-derinlemesine-bakis\/\">\u0130nternet Protokolleri: TCP\/IP&#8217;den HTTP\/3&#8217;e Derinlemesine Bak\u0131\u015f<\/a> ba\u015fl\u0131kl\u0131 yaz\u0131m\u0131zda ba\u011flant\u0131lar\u0131n katmanlar aras\u0131ndaki yerini de g\u00f6rebilirsiniz.<\/p>\n<h2 id=\"ftp-ile-dosya-nasil-indirilir-ve-yuklenir\">FTP ile dosya nas\u0131l indirilir ve y\u00fcklenir?<\/h2>\n<p>Grafik istemciler sunucu adresini, kullan\u0131c\u0131y\u0131, parolay\u0131 ve ba\u011flant\u0131 t\u00fcr\u00fcn\u00fc alanlara b\u00f6lerek g\u00f6sterir. Komut sat\u0131r\u0131nda ise i\u015flemin arka plan\u0131n\u0131 daha a\u00e7\u0131k g\u00f6r\u00fcrs\u00fcn\u00fcz. Debian ve Ubuntu gibi sistemlerde temel FTP istemcisini kurmak i\u00e7in \u015fu komut kullan\u0131labilir:<\/p>\n<pre><code>sudo apt update\nsudo apt install ftp<\/code><\/pre>\n<p>Bu istemci basit testler i\u00e7in yeterlidir. \u00dcretim i\u015flerinde ben genellikle daha geli\u015fmi\u015f se\u00e7enekleri olan <code>lftp<\/code> kullan\u0131yorum.<\/p>\n<pre><code>sudo apt install lftp\nlftp ftp.example.com\nuser dosya_kullanici\nls\nget rapor.zip -o \/tmp\/rapor.zip\nbye<\/code><\/pre>\n<p><code>user<\/code> komutundan sonra istemci parolay\u0131 etkile\u015fimli olarak sorar; parolay\u0131 komut sat\u0131r\u0131na yazmamak iyi bir al\u0131\u015fkanl\u0131kt\u0131r. <code>get<\/code> uzak dosyay\u0131 yerel makineye indirir, <code>-o<\/code> ise yerel hedef yolunu belirtir.<\/p>\n<p>Y\u00fckleme i\u00e7in <code>put<\/code> kullanabilirsiniz:<\/p>\n<pre><code>lftp ftp.example.com\nuser dosya_kullanici\nput .\/build\/site.zip -o \/incoming\/site.zip\nbye<\/code><\/pre>\n<p>Burada yerel dosya <code>.\/build\/site.zip<\/code>, uzak sunucudaki <code>\/incoming\/site.zip<\/code> yoluna g\u00f6nderilir. Uzak dizindeki yazma izinleri, kota ve sunucunun dosya ad\u0131 kurallar\u0131 nedeniyle i\u015flem ba\u015far\u0131s\u0131z olabilir.<\/p>\n<p>Bir klas\u00f6r\u00fcn tamam\u0131n\u0131 ta\u015f\u0131mak gerekti\u011finde <code>mirror<\/code> komutu kullan\u0131\u015fl\u0131d\u0131r:<\/p>\n<pre><code>lftp ftp.example.com\nuser dosya_kullanici\nmirror --verbose .\/site \/incoming\/site\nbye<\/code><\/pre>\n<p>Bu komut yerel <code>.\/site<\/code> klas\u00f6r\u00fcn\u00fc uzak tarafta <code>\/incoming\/site<\/code> konumuna g\u00f6nderir. Tersi y\u00f6nde indirme yapmak i\u00e7in <code>mirror --verbose \/remote\/site .\/site<\/code> yaz\u0131l\u0131r. B\u00fcy\u00fck bir dizinde \u00f6nce k\u00fc\u00e7\u00fck bir test klas\u00f6r\u00fcyle deneme yapar\u0131m; FTP istemcisinin bir se\u00e7ene\u011fini yanl\u0131\u015f anlamak, beklenenden fazla dosyan\u0131n \u00fczerine yaz\u0131lmas\u0131na neden olabilir.<\/p>\n<h3>Pasif modu a\u00e7\u0131k\u00e7a kullanmak<\/h3>\n<p>\u0130stemci pasif moda ge\u00e7miyorsa bunu oturum i\u00e7inde belirtebilirsiniz:<\/p>\n<pre><code>lftp ftp.example.com\nset ftp:passive-mode true\nuser dosya_kullanici\nls\nbye<\/code><\/pre>\n<p>Bu sat\u0131rdaki <code>true<\/code> de\u011feri istemciye veri ba\u011flant\u0131s\u0131n\u0131 sunucuya do\u011fru kendisinin a\u00e7mas\u0131n\u0131 s\u00f6yler. Ba\u011flant\u0131 h\u00e2l\u00e2 kurulmuyorsa sunucunun pasif port aral\u0131\u011f\u0131, NAT d\u0131\u015f adresi ve g\u00fcvenlik duvar\u0131 kurallar\u0131 birlikte kontrol edilmelidir.<\/p>\n<p>Alternatif olarak <code>curl<\/code> ile tek dosya indirebilir veya y\u00fckleyebilirsiniz:<\/p>\n<pre><code>curl --ftp-pasv -u dosya_kullanici ftp:\/\/ftp.example.com\/rapor.zip -o \/tmp\/rapor.zip\ncurl --ftp-pasv -u dosya_kullanici --upload-file .\/site.zip ftp:\/\/ftp.example.com\/incoming\/site.zip<\/code><\/pre>\n<p><code>-u<\/code> se\u00e7ene\u011finde yaln\u0131zca kullan\u0131c\u0131 ad\u0131n\u0131 verirseniz curl parolay\u0131 etkile\u015fimli olarak ister. Otomatik i\u015flerde parola saklama bi\u00e7imine ayr\u0131ca dikkat edin; shell ge\u00e7mi\u015fi, s\u00fcre\u00e7 listesi ve CI\/CD loglar\u0131 istemeden kimlik bilgisi s\u0131zd\u0131rabilir.<\/p>\n<h2 id=\"ftp-kullanirken-guvenlik-acisindan-nelere-dikkat-edilmeli\">FTP kullan\u0131rken g\u00fcvenlik a\u00e7\u0131s\u0131ndan nelere dikkat edilmeli?<\/h2>\n<p>FTP&#8217;nin temel sorunu yaln\u0131zca eski olmas\u0131 de\u011fil, varsay\u0131lan g\u00fcvenlik modelinin bug\u00fcnk\u00fc beklentilere uymamas\u0131d\u0131r. Normal FTP&#8217;de kullan\u0131c\u0131 ad\u0131, parola ve transfer edilen dosya i\u00e7eri\u011fi a\u011f \u00fczerinde \u015fifrelenmeden ta\u015f\u0131nabilir. Ayn\u0131 a\u011fdaki k\u00f6t\u00fc niyetli bir g\u00f6zlemci bu trafi\u011fi yakalayabilir.<\/p>\n<ul>\n<li><strong>Normal FTP&#8217;yi hassas veriler i\u00e7in kullanmay\u0131n.<\/strong> Yedekler, m\u00fc\u015fteri verileri, yap\u0131land\u0131rma dosyalar\u0131 ve parolalar d\u00fcz metin ba\u011flant\u0131yla ta\u015f\u0131nmamal\u0131d\u0131r.<\/li>\n<li><strong>SFTP veya FTPS tercih edin.<\/strong> Hangi se\u00e7ene\u011fin kullan\u0131laca\u011f\u0131 sa\u011flay\u0131c\u0131n\u0131n destekledi\u011fi protokole ve mevcut istemci altyap\u0131s\u0131na ba\u011fl\u0131d\u0131r.<\/li>\n<li><strong>\u0130simli, s\u0131n\u0131rl\u0131 yetkili kullan\u0131c\u0131 olu\u015fturun.<\/strong> Dosya transferi i\u00e7in kullan\u0131lan hesab\u0131n gereksiz bi\u00e7imde root yetkisine sahip olmas\u0131 kabul edilebilir bir \u00e7\u00f6z\u00fcm de\u011fildir.<\/li>\n<li><strong>K\u00f6k dizini s\u0131n\u0131rland\u0131r\u0131n.<\/strong> FTP kullan\u0131c\u0131s\u0131n\u0131n sistemin tamam\u0131n\u0131 gezememesi i\u00e7in chroot veya uygulaman\u0131n sundu\u011fu izolasyon se\u00e7eneklerini de\u011ferlendirin.<\/li>\n<li><strong>Pasif port aral\u0131\u011f\u0131n\u0131 daralt\u0131n.<\/strong> Sunucuda geni\u015f ve rastgele bir port aral\u0131\u011f\u0131n\u0131 internete a\u00e7mak yerine ihtiyaca uygun bir aral\u0131k belirleyip yaln\u0131zca onu izinli h\u00e2le getirin.<\/li>\n<li><strong>Loglar\u0131 izleyin.<\/strong> Ba\u015far\u0131s\u0131z giri\u015fler, ola\u011fan d\u0131\u015f\u0131 saatlerdeki transferler ve k\u0131sa s\u00fcrede \u00e7ok say\u0131da dosya iste\u011fi incelenmelidir.<\/li>\n<li><strong>Parolalar\u0131 benzersiz tutun.<\/strong> M\u00fcmk\u00fcnse parola yerine SSH anahtar\u0131 kullanan SFTP ak\u0131\u015f\u0131na ge\u00e7in.<\/li>\n<\/ul>\n<p>FTP hesab\u0131n\u0131 web sitesinin document root dizinine ba\u011flamak da dikkat ister. Hesab\u0131n yazabildi\u011fi dizinde \u00e7al\u0131\u015ft\u0131r\u0131labilir bir dosyan\u0131n web \u00fczerinden eri\u015filebilir h\u00e2le gelmesi, yaln\u0131zca dosya aktar\u0131m\u0131 problemi olmaktan \u00e7\u0131kar. Y\u00fcklenen dosyan\u0131n uzant\u0131s\u0131, MIME t\u00fcr\u00fc, sahipli\u011fi ve web sunucusunun \u00e7al\u0131\u015ft\u0131rma kurallar\u0131 birlikte de\u011ferlendirilmelidir.<\/p>\n<p>Bir FTP sunucusunu internete a\u00e7madan \u00f6nce a\u011f ak\u0131\u015f\u0131n\u0131 a\u00e7\u0131k\u00e7a yazmak faydal\u0131 olur:<\/p>\n<ol>\n<li>\u0130stemci hangi adrese ve kontrol portuna ba\u011flanacak?<\/li>\n<li>Aktif mi, pasif mi ba\u011flant\u0131 kullan\u0131lacak?<\/li>\n<li>Pasif mod i\u00e7in hangi TCP port aral\u0131\u011f\u0131 a\u00e7\u0131lacak?<\/li>\n<li>Sunucu NAT arkas\u0131ndaysa d\u0131\u015f IP adresi FTP yap\u0131land\u0131rmas\u0131na i\u015flendi mi?<\/li>\n<li>Hangi kullan\u0131c\u0131 hangi yerel dizine eri\u015febilecek?<\/li>\n<li>Transfer loglar\u0131 ne kadar s\u00fcre saklanacak?<\/li>\n<\/ol>\n<p>Bu sorular\u0131n cevab\u0131 yoksa port a\u00e7mak yap\u0131land\u0131rma say\u0131lmaz; yaln\u0131zca bir sonraki ar\u0131zan\u0131n yerini de\u011fi\u015ftirir. Ben \u00f6zellikle NAT arkas\u0131ndaki test sunucular\u0131nda \u00f6nce istemci logunu, sonra sunucunun ba\u011flant\u0131 logunu, en son g\u00fcvenlik duvar\u0131 saya\u00e7lar\u0131n\u0131 kontrol ederim.<\/p>\n<h2 id=\"ftp-baglanti-sorunlari-nasil-cozulur\">FTP ba\u011flant\u0131 sorunlar\u0131 nas\u0131l \u00e7\u00f6z\u00fcl\u00fcr?<\/h2>\n<p>FTP hatalar\u0131n\u0131n \u00f6nemli b\u00f6l\u00fcm\u00fc yanl\u0131\u015f parola y\u00fcz\u00fcnden \u00e7\u0131kmaz. Yanl\u0131\u015f mod, kapal\u0131 pasif portlar, d\u0131\u015f IP&#8217;nin hatal\u0131 tan\u0131mlanmas\u0131 ve kullan\u0131c\u0131 dizini izinleri daha s\u0131k kar\u015f\u0131ma \u00e7\u0131kar.<\/p>\n<h3>Giri\u015f ba\u015far\u0131l\u0131, dizin listesi al\u0131nam\u0131yor<\/h3>\n<p>Bu belirti kontrol ba\u011flant\u0131s\u0131n\u0131n \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131, veri ba\u011flant\u0131s\u0131n\u0131n ise kurulamad\u0131\u011f\u0131n\u0131 g\u00f6sterir. \u0130stemci logunda <code>Entering Passive Mode<\/code> veya <code>227<\/code> yan\u0131t\u0131n\u0131 aray\u0131n. Yan\u0131tta \u00f6zel a\u011f adresi g\u00f6r\u00fcn\u00fcyorsa sunucu NAT arkas\u0131nda olabilir; d\u0131\u015far\u0131dan ba\u011flanan istemciye ula\u015f\u0131labilir bir adres verilmelidir.<\/p>\n<p>Sunucu taraf\u0131nda \u015fu kontroller yap\u0131labilir:<\/p>\n<pre><code>sudo ss -ltnp\nsudo nft list ruleset\nsudo journalctl -u vsftpd --since today<\/code><\/pre>\n<p><code>ss<\/code> dinleyen TCP portlar\u0131n\u0131, <code>nft<\/code> g\u00fcvenlik duvar\u0131 kurallar\u0131n\u0131, <code>journalctl<\/code> ise servis loglar\u0131n\u0131 g\u00f6sterir. \u00c7\u0131kt\u0131da yaln\u0131zca TCP 21&#8217;i g\u00f6rmek pasif veri portlar\u0131n\u0131n do\u011fru \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 kan\u0131tlamaz; transfer an\u0131nda ilgili portun a\u00e7\u0131ld\u0131\u011f\u0131n\u0131 veya dinlendi\u011fini ayr\u0131ca kontrol etmek gerekir.<\/p>\n<h3>530 Login incorrect hatas\u0131<\/h3>\n<p>Bu yan\u0131t kullan\u0131c\u0131 ad\u0131 veya parolan\u0131n hatal\u0131 oldu\u011funu g\u00f6sterebilir, fakat hesap politikalar\u0131 da ayn\u0131 sonuca yol a\u00e7abilir. Kullan\u0131c\u0131n\u0131n kabu\u011fu, hesab\u0131n kilitli olup olmad\u0131\u011f\u0131, eri\u015fim dizininin varl\u0131\u011f\u0131 ve FTP sunucusunun kullan\u0131c\u0131 listesi kontrol edilmelidir. Ba\u015far\u0131s\u0131z denemeleri art\u0131rmadan \u00f6nce sunucu loguna bak\u0131n.<\/p>\n<h3>Dosya aktar\u0131m\u0131 yar\u0131da kesiliyor<\/h3>\n<p>Dosya boyutu, ba\u011flant\u0131 zaman a\u015f\u0131m\u0131, disk kotas\u0131 veya aradaki a\u011f cihaz\u0131n\u0131n idle timeout de\u011feri etkili olabilir. Sunucunun diskini <code>df -h<\/code> ile, inode durumunu <code>df -i<\/code> ile kontrol edin. Bir VPS&#8217;te yaln\u0131zca disk kapasitesine bak\u0131p inode&#8217;lar\u0131n t\u00fckendi\u011fini g\u00f6zden ka\u00e7\u0131rm\u0131\u015ft\u0131m; k\u00fc\u00e7\u00fck dosyalarla dolan bir dizin y\u00fcz\u00fcnden yeni transferler ba\u015far\u0131s\u0131z oluyordu.<\/p>\n<pre><code>df -h\ndf -i\nncdu \/var<\/code><\/pre>\n<p><code>ncdu<\/code>, hangi dizinin alan\u0131 t\u00fcketti\u011fini h\u0131zl\u0131ca g\u00f6rmenizi sa\u011flar. B\u00fcy\u00fck bir transferi tekrar tekrar ba\u015flatmadan \u00f6nce hem disk alan\u0131n\u0131 hem de dosya sisteminin inode durumunu kontrol etmek zaman kazand\u0131r\u0131r.<\/p>\n<h2 id=\"ftp-hangi-durumlarda-tercih-edilebilir\">FTP hangi durumlarda tercih edilebilir?<\/h2>\n<p>FTP&#8217;yi tamamen yok saymak yerine kullan\u0131m ba\u011flam\u0131na bakmak gerekir. Eski bir uygulama yaln\u0131zca FTP ile entegrasyon sa\u011fl\u0131yor olabilir, bir m\u00fc\u015fterinin hosting paneli FTPS sunuyor olabilir veya harici bir sistemin teslim protokol\u00fc FTP olarak tan\u0131mlanm\u0131\u015f olabilir. Protokol\u00fc de\u011fi\u015ftiremiyorsan\u0131z ba\u011flant\u0131y\u0131 izole etmek, eri\u015fim listesini daraltmak ve m\u00fcmk\u00fcnse TLS kullanmak gerekir.<\/p>\n<p>Yeni bir Linux sunucusu kuruyorsan\u0131z ilk tercihim SFTP olur. SSH zaten y\u00f6netim i\u00e7in kullan\u0131l\u0131yorsa ek bir FTP daemon&#8217;\u0131 \u00e7al\u0131\u015ft\u0131rmadan dosya aktar\u0131m\u0131 yap\u0131labilir. Web sitesi da\u011f\u0131t\u0131m\u0131nda ise Git tabanl\u0131 da\u011f\u0131t\u0131m, CI\/CD veya sa\u011flay\u0131c\u0131n\u0131n g\u00fcvenli dosya aktar\u0131m\u0131 se\u00e7ene\u011fi daha kontroll\u00fc bir ak\u0131\u015f sunabilir.<\/p>\n<p>FTP ile web sunucusunun HTTP trafi\u011fini birbirine kar\u0131\u015ft\u0131rmamak gerekir. FTP&#8217;den dosya y\u00fcklemek, dosyan\u0131n taray\u0131c\u0131dan g\u00fcvenli bi\u00e7imde servis edilece\u011fi anlam\u0131na gelmez. HTTPS sertifikas\u0131 ve web sunucusu taraf\u0131ndaki ayarlar ayr\u0131 konudur; <a href=\"https:\/\/www.vps.tc\/blog\/tr\/vps-ssl-sertifikasi-kurulumu-lets-encrypt\/\">VPS&#8217;te SSL Sertifikas\u0131 Kurulumu: Let&#8217;s Encrypt Rehberi<\/a> ba\u015fl\u0131kl\u0131 i\u00e7erikte bu ayr\u0131m\u0131n web taraf\u0131n\u0131 ele alm\u0131\u015ft\u0131k.<\/p>\n<p>Dosya transferi s\u0131ras\u0131nda bant geni\u015fli\u011fini de hesaba kat\u0131n. B\u00fcy\u00fck yedekleri mesai saatlerinde FTP ile ta\u015f\u0131mak, ayn\u0131 VPS \u00fczerindeki web uygulamas\u0131n\u0131n yan\u0131t s\u00fcrelerini etkileyebilir. Trafik planlamas\u0131 yaparken <a href=\"https:\/\/www.vps.tc\/blog\/tr\/vps-bant-genisligi-ihtiyacinizi-hesaplayin\/\">VPS Bant Geni\u015fli\u011fi Nedir? \u0130htiyac\u0131n\u0131z\u0131 Hesaplay\u0131n<\/a> konusundaki \u00f6l\u00e7\u00fcm yakla\u015f\u0131m\u0131 i\u015finize yarar.<\/p>\n<h2 id=\"sik-sorulan-sorular\">S\u0131k Sorulan Sorular<\/h2>\n<h3>FTP g\u00fcvenli midir?<\/h3>\n<p>Normal FTP, kullan\u0131c\u0131 ad\u0131, parola ve dosya i\u00e7eri\u011fini \u015fifrelemedi\u011fi i\u00e7in g\u00fcvenli kabul edilmez. Hassas verilerde SFTP veya TLS kullanan FTPS tercih edilmeli, eri\u015fim yetkileri ve loglar ayr\u0131ca s\u0131n\u0131rland\u0131r\u0131lmal\u0131d\u0131r.<\/p>\n<h3>FTP i\u00e7in hangi port a\u00e7\u0131l\u0131r?<\/h3>\n<p>Kontrol ba\u011flant\u0131s\u0131 i\u00e7in \u00e7o\u011funlukla TCP 21 kullan\u0131l\u0131r. Pasif FTP&#8217;de sunucunun yap\u0131land\u0131rd\u0131\u011f\u0131 veri port aral\u0131\u011f\u0131 da g\u00fcvenlik duvar\u0131nda izinli olmal\u0131d\u0131r; yaln\u0131zca TCP 21&#8217;i a\u00e7mak \u00e7o\u011fu pasif ba\u011flant\u0131 i\u00e7in yeterli de\u011fildir.<\/p>\n<h3>FTP ile SFTP aras\u0131ndaki temel fark nedir?<\/h3>\n<p>FTP, kendi kontrol ve veri ba\u011flant\u0131lar\u0131n\u0131 kullanan bir dosya transfer protokol\u00fcd\u00fcr. SFTP ise SSH \u00fczerinden \u00e7al\u0131\u015fan ayr\u0131 bir protokold\u00fcr ve genellikle TCP 22 \u00fczerinde tek ba\u011flant\u0131yla ilerler.<\/p>\n<h3>FTP istemcisinde pasif mod ne zaman kullan\u0131lmal\u0131?<\/h3>\n<p>\u0130stemci NAT veya g\u00fcvenlik duvar\u0131 arkas\u0131ndaysa pasif mod genellikle daha kolay \u00e7al\u0131\u015f\u0131r; \u00e7\u00fcnk\u00fc veri ba\u011flant\u0131s\u0131n\u0131 istemci ba\u015flat\u0131r. Yine de sunucuda pasif port aral\u0131\u011f\u0131 ve d\u0131\u015f IP do\u011fru yap\u0131land\u0131r\u0131lmam\u0131\u015fsa pasif mod ba\u011flant\u0131y\u0131 tek ba\u015f\u0131na \u00e7\u00f6zmez.<\/p>\n<h2 id=\"kaynaklar\">Kaynaklar<\/h2>\n<ul class=\"aiw-sources\">\n<li><a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc959\" target=\"_blank\" rel=\"noopener\">RFC 959 &#8211; File Transfer Protocol<\/a> \u2014 rfc-editor.org<\/li>\n<li><a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc4217\" target=\"_blank\" rel=\"noopener\">RFC 4217 &#8211; Securing FTP with TLS<\/a> \u2014 rfc-editor.org<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>FTP&#8217;nin ne oldu\u011funu, kontrol ve veri ba\u011flant\u0131lar\u0131n\u0131n nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131, aktif-pasif mod fark\u0131n\u0131 ve FTP, FTPS, SFTP ayr\u0131m\u0131n\u0131 a\u00e7\u0131kl\u0131yorum.<\/p>\n","protected":false},"author":2,"featured_media":581,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[279],"tags":[],"class_list":["post-583","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-nedir"],"lang":"tr","translations":{"tr":583,"en":584},"pll_sync_post":[],"_links":{"self":[{"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/posts\/583","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/comments?post=583"}],"version-history":[{"count":1,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/posts\/583\/revisions"}],"predecessor-version":[{"id":585,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/posts\/583\/revisions\/585"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/media\/581"}],"wp:attachment":[{"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/media?parent=583"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/categories?post=583"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.vps.tc\/blog\/wp-json\/wp\/v2\/tags?post=583"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}