{"id":42068,"date":"2026-05-26T08:00:57","date_gmt":"2026-05-26T05:00:57","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=42068"},"modified":"2026-05-26T08:01:31","modified_gmt":"2026-05-26T05:01:31","slug":"ubuntu-18-04-uzerinde-shell-erisimi-olmadan-sftp-nasil-etkinlestirilir","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-shell-erisimi-olmadan-sftp-nasil-etkinlestirilir\/","title":{"rendered":"Ubuntu 18.04 \u00dczerinde Shell Eri\u015fimi Olmadan SFTP Nas\u0131l Etkinle\u015ftirilir?"},"content":{"rendered":"<h2>Ubuntu 18.04 \u00dczerinde Shell Eri\u015fimi Olmadan SFTP Nas\u0131l Etkinle\u015ftirilir?<\/h2>\n<p>Modern sunucu y\u00f6netiminde g\u00fcvenlik ve eri\u015fim kontrol\u00fc kritik \u00f6neme sahiptir. \u00d6zellikle dosya transferi s\u00f6z konusu oldu\u011funda, kullan\u0131c\u0131lara tam kabuk (shell) eri\u015fimi vermeden g\u00fcvenli bir \u015fekilde dosya al\u0131\u015fveri\u015fi yapmalar\u0131n\u0131 sa\u011flamak yayg\u0131n bir gereksinimdir. Bu makale, Ubuntu 18.04 i\u015fletim sistemi \u00fczerinde Secure File Transfer Protocol (SFTP) hizmetini, kullan\u0131c\u0131lara SSH kabuk eri\u015fimi vermeden nas\u0131l yap\u0131land\u0131raca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m a\u00e7\u0131klamaktad\u0131r. Bu y\u00f6ntem, web sunucular\u0131, uygulama ortamlar\u0131 veya \u00fc\u00e7\u00fcnc\u00fc taraf entegrasyonlar\u0131 gibi senaryolarda dosya y\u00f6netimi i\u00e7in ideal bir \u00e7\u00f6z\u00fcm sunar.<\/p>\n<p>SFTP, SSH (Secure Shell) protokol\u00fc \u00fczerinden \u00e7al\u0131\u015fan g\u00fcvenli bir dosya transfer mekanizmas\u0131d\u0131r. Geleneksel FTP&#8217;nin aksine, SFTP t\u00fcm veriyi \u015fifreleyerek transfer eder ve kimlik do\u011frulama i\u00e7in SSH&#8217;nin g\u00fc\u00e7l\u00fc mekanizmalar\u0131n\u0131 kullan\u0131r. Ancak, bir kullan\u0131c\u0131ya SSH eri\u015fimi vermek, o kullan\u0131c\u0131n\u0131n sunucu \u00fczerinde komut \u00e7al\u0131\u015ft\u0131rma yetene\u011fine sahip olmas\u0131 anlam\u0131na gelir ki bu, \u00e7o\u011fu zaman istenmeyen bir durumdur. Bu nedenle, SFTP&#8217;yi kabuk eri\u015fimi olmadan yap\u0131land\u0131rmak, hem g\u00fcvenlik hem de y\u00f6netim kolayl\u0131\u011f\u0131 a\u00e7\u0131s\u0131ndan b\u00fcy\u00fck avantajlar sa\u011flar.<\/p>\n<h3>Neden Shell Eri\u015fimi Olmadan SFTP?<\/h3>\n<p>Bir sunucu \u00fczerinde kullan\u0131c\u0131lara dosya transferi yetene\u011fi sa\u011flaman\u0131n bir\u00e7ok yolu vard\u0131r, ancak bunlar\u0131n hepsi ayn\u0131 g\u00fcvenlik seviyesini sunmaz. SFTP&#8217;yi kabuk eri\u015fimi olmadan yap\u0131land\u0131rmak, \u00f6zellikle a\u015fa\u011f\u0131daki senaryolarda tercih edilen bir y\u00f6ntemdir:<\/p>\n<p>*   <strong>G\u00fcvenlik:<\/strong> Kullan\u0131c\u0131lar\u0131n sunucuda rastgele komutlar \u00e7al\u0131\u015ft\u0131rmas\u0131n\u0131 engelleyerek potansiyel g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 minimize eder. Bu, \u00f6zellikle d\u0131\u015far\u0131dan eri\u015fim sa\u011flayan veya k\u0131s\u0131tl\u0131 yetkilere sahip olmas\u0131 gereken kullan\u0131c\u0131lar i\u00e7in \u00f6nemlidir.<br \/>\n*   <strong>\u0130zolasyon (Chroot Jail):<\/strong> Kullan\u0131c\u0131lar\u0131 kendi belirlenmi\u015f dizinleriyle (chroot jail) s\u0131n\u0131rlar. Bu sayede kullan\u0131c\u0131lar, dosya sisteminin geri kalan\u0131n\u0131 g\u00f6remez veya eri\u015femez, b\u00f6ylece sistemin b\u00fct\u00fcnl\u00fc\u011f\u00fc korunur.<br \/>\n*   <strong>Uyumluluk:<\/strong> Baz\u0131 g\u00fcvenlik standartlar\u0131 ve uyumluluk gereksinimleri, sunucu eri\u015fiminin en az ayr\u0131cal\u0131k ilkesine g\u00f6re yap\u0131land\u0131r\u0131lmas\u0131n\u0131 zorunlu k\u0131lar. SFTP&#8217;nin bu \u015fekilde yap\u0131land\u0131r\u0131lmas\u0131, bu gereksinimleri kar\u015f\u0131lamaya yard\u0131mc\u0131 olur.<br \/>\n*   <strong>Y\u00f6netim Kolayl\u0131\u011f\u0131:<\/strong> Belirli g\u00f6revler i\u00e7in (\u00f6rne\u011fin, bir web sitesinin dosyalar\u0131n\u0131 g\u00fcncellemek) tam SSH eri\u015fimi gerektirmeyen kullan\u0131c\u0131lara sadece ihtiya\u00e7 duyduklar\u0131 eri\u015fimi sa\u011flamak, y\u00f6netim karma\u015f\u0131kl\u0131\u011f\u0131n\u0131 azalt\u0131r.<br \/>\n*   <strong>Hata Riskinin Azalt\u0131lmas\u0131:<\/strong> Kullan\u0131c\u0131lar\u0131n yanl\u0131\u015fl\u0131kla veya bilerek kritik sistem dosyalar\u0131n\u0131 de\u011fi\u015ftirmesi veya silmesi riskini ortadan kald\u0131r\u0131r.<\/p>\n<p>Bu makalede ele alaca\u011f\u0131m\u0131z y\u00f6ntem, OpenSSH sunucusunun <code>ChrootDirectory<\/code> ve <code>ForceCommand internal-sftp<\/code> \u00f6zelliklerini kullanarak SFTP kullan\u0131c\u0131lar\u0131n\u0131 izole etmeye odaklanacakt\u0131r.<\/p>\n<h3>\u00d6n Ko\u015fullar<\/h3>\n<p>Bu rehbere ba\u015flamadan \u00f6nce a\u015fa\u011f\u0131daki maddelerin haz\u0131r oldu\u011fundan emin olun:<\/p>\n<p>*   <strong>Ubuntu 18.04 Sunucusu:<\/strong> Y\u00f6netimsel eri\u015fime sahip (sudo yetkileri) bir Ubuntu 18.04 sunucusu.<br \/>\n*   <strong>OpenSSH Sunucusu:<\/strong> SSH sunucusunun kurulu ve \u00e7al\u0131\u015f\u0131r durumda olmas\u0131. Genellikle Ubuntu kurulumlar\u0131nda varsay\u0131lan olarak gelir. Kontrol etmek i\u00e7in <code>systemctl status ssh<\/code> komutunu kullanabilirsiniz. E\u011fer kurulu de\u011filse, <code>sudo apt update && sudo apt install openssh-server<\/code> komutuyla kurabilirsiniz.<br \/>\n*   <strong>Temel Linux Bilgisi:<\/strong> Dizinler, izinler, kullan\u0131c\u0131lar ve grup y\u00f6netimi hakk\u0131nda temel bilgi.<br \/>\n*   <strong>Sudo Yetkileri:<\/strong> T\u00fcm yap\u0131land\u0131rma ad\u0131mlar\u0131 i\u00e7in <code>sudo<\/code> komutunu kullanabilen bir kullan\u0131c\u0131 hesab\u0131na sahip olman\u0131z gerekmektedir.<\/p>\n<h3>Mekanizmay\u0131 Anlamak: Chroot Jail<\/h3>\n<p>Bu yap\u0131land\u0131rman\u0131n kalbinde <code>chroot<\/code> (change root) mekanizmas\u0131 yatar. <code>chroot<\/code>, bir program\u0131n ve onun alt s\u00fcre\u00e7lerinin \u00e7al\u0131\u015faca\u011f\u0131 k\u00f6k dizinini de\u011fi\u015ftiren bir Unix\/Linux sistem \u00e7a\u011fr\u0131s\u0131d\u0131r. Bir kullan\u0131c\u0131 SFTP ile ba\u011fland\u0131\u011f\u0131nda ve <code>ChrootDirectory<\/code> yap\u0131land\u0131rmas\u0131 etkin oldu\u011funda, o kullan\u0131c\u0131n\u0131n dosya sistemi g\u00f6r\u00fcn\u00fcm\u00fc, belirlenen dizinle s\u0131n\u0131rlan\u0131r. Kullan\u0131c\u0131, bu dizinin d\u0131\u015f\u0131ndaki hi\u00e7bir \u015feye eri\u015femez veya g\u00f6remez. Bu, bir &#8220;chroot jail&#8221; veya &#8220;chroot hapishanesi&#8221; olarak adland\u0131r\u0131l\u0131r.<\/p>\n<p><code>sshd_config<\/code> dosyas\u0131ndaki <code>ChrootDirectory<\/code> direktifi, SSH sunucusuna belirli bir kullan\u0131c\u0131 veya grup i\u00e7in k\u00f6k dizini de\u011fi\u015ftirmesini s\u00f6yler. Bu dizin ve onun \u00fcst dizinleri, g\u00fcvenlik nedenleriyle <code>root<\/code> kullan\u0131c\u0131s\u0131na ait olmal\u0131 ve ba\u015fkalar\u0131 taraf\u0131ndan yaz\u0131labilir olmamal\u0131d\u0131r. Bu k\u0131s\u0131tlama, k\u00f6t\u00fc niyetli bir kullan\u0131c\u0131n\u0131n <code>chroot<\/code> ortam\u0131ndan ka\u00e7mas\u0131n\u0131 zorla\u015ft\u0131rmak i\u00e7indir.<\/p>\n<p><code>ForceCommand internal-sftp<\/code> direktifi ise, belirli bir kullan\u0131c\u0131 veya grup i\u00e7in SSH ba\u011flant\u0131s\u0131 kuruldu\u011funda, normal bir kabuk ba\u015flatmak yerine do\u011frudan OpenSSH&#8217;nin kendi dahili SFTP sunucusunu \u00e7al\u0131\u015ft\u0131rmas\u0131n\u0131 sa\u011flar. Bu, kullan\u0131c\u0131n\u0131n komut sat\u0131r\u0131 eri\u015fimini tamamen engellerken, SFTP dosya transfer yetene\u011fini korur.<\/p>\n<p>Bu iki direktifin birle\u015fimi, kullan\u0131c\u0131lara sadece belirlenmi\u015f bir dizin i\u00e7inde SFTP arac\u0131l\u0131\u011f\u0131yla dosya transferi yapma yetene\u011fi verirken, ayn\u0131 zamanda sunucuya tam kabuk eri\u015fimini engeller.<\/p>\n<h2>Ad\u0131m Ad\u0131m Yap\u0131land\u0131rma<\/h2>\n<p>\u015eimdi, shell eri\u015fimi olmayan bir SFTP kullan\u0131c\u0131s\u0131 olu\u015fturmak i\u00e7in gerekli ad\u0131mlar\u0131 uygulayal\u0131m.<\/p>\n<h3>Ad\u0131m 1: SSH Yap\u0131land\u0131rmas\u0131n\u0131 Yedekleme<\/h3>\n<p>Herhangi bir sunucu yap\u0131land\u0131rmas\u0131na ba\u015flamadan \u00f6nce, mevcut yap\u0131land\u0131rma dosyas\u0131n\u0131 yedeklemek iyi bir uygulamad\u0131r. Bu, bir hata durumunda kolayca geri d\u00f6nmenizi sa\u011flar.<\/p>\n<pre><code class=\"language-bash\">sudo cp \/etc\/ssh\/sshd_config \/etc\/ssh\/sshd_config.bak<\/code><\/pre>\n<p>Bu komut, <code>sshd_config<\/code> dosyas\u0131n\u0131n bir kopyas\u0131n\u0131 <code>sshd_config.bak<\/code> ad\u0131yla olu\u015fturur.<\/p>\n<h3>Ad\u0131m 2: SFTP Kullan\u0131c\u0131s\u0131 ve Grubu Olu\u015fturma<\/h3>\n<p>G\u00fcvenli\u011fi art\u0131rmak ve y\u00f6netimi kolayla\u015ft\u0131rmak i\u00e7in, SFTP kullan\u0131c\u0131lar\u0131n\u0131 ayr\u0131 bir gruba atayaca\u011f\u0131z ve bu kullan\u0131c\u0131lara kabuk eri\u015fimi vermeyece\u011fiz.<\/p>\n<p>\u00d6ncelikle, <code>sftpusers<\/code> ad\u0131nda yeni bir grup olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo groupadd sftpusers<\/code><\/pre>\n<p>\u015eimdi, <code>sftpuser1<\/code> ad\u0131nda yeni bir kullan\u0131c\u0131 olu\u015ftural\u0131m. Bu kullan\u0131c\u0131ya shell eri\u015fimi vermeyece\u011fiz ve onu <code>sftpusers<\/code> grubuna ekleyece\u011fiz. <code>home<\/code> dizini olu\u015fturmayaca\u011f\u0131z, \u00e7\u00fcnk\u00fc <code>chroot<\/code> dizinini biz manuel olarak belirleyece\u011fiz.<\/p>\n<pre><code class=\"language-bash\">sudo useradd -m -g sftpusers -s \/usr\/sbin\/nologin sftpuser1<\/code><\/pre>\n<p>*   <code>-m<\/code>: Kullan\u0131c\u0131n\u0131n ev dizinini olu\u015fturur. (Asl\u0131nda chroot i\u00e7in do\u011frudan kullan\u0131lmayacak, ancak standart bir kullan\u0131c\u0131 olu\u015fturma ad\u0131m\u0131d\u0131r.)<br \/>\n*   <code>-g sftpusers<\/code>: Kullan\u0131c\u0131y\u0131 <code>sftpusers<\/code> grubuna ekler.<br \/>\n*   <code>-s \/usr\/sbin\/nologin<\/code>: Kullan\u0131c\u0131n\u0131n kabu\u011funu <code>\/usr\/sbin\/nologin<\/code> olarak ayarlar. Bu, kullan\u0131c\u0131n\u0131n SSH \u00fczerinden oturum a\u00e7mas\u0131n\u0131 engeller. Alternatif olarak <code>\/bin\/false<\/code> de kullan\u0131labilir.<\/p>\n<p>Olu\u015fturdu\u011fumuz kullan\u0131c\u0131 i\u00e7in g\u00fc\u00e7l\u00fc bir parola belirleyelim:<\/p>\n<pre><code class=\"language-bash\">sudo passwd sftpuser1<\/code><\/pre>\n<p>Parolay\u0131 iki kez girmeniz istenecektir.<\/p>\n<p>E\u011fer kullan\u0131c\u0131 i\u00e7in bir ev dizini olu\u015fturduysan\u0131z (<code>-m<\/code> ile), bu dizin <code>\/home\/sftpuser1<\/code> olacakt\u0131r. Ancak, <code>chroot<\/code> yap\u0131land\u0131rmas\u0131 nedeniyle, kullan\u0131c\u0131n\u0131n ger\u00e7ek \u00e7al\u0131\u015fma dizini bu olmayacakt\u0131r.<\/p>\n<h3>Ad\u0131m 3: SFTP K\u00f6k Dizini Olu\u015fturma ve \u0130zinleri Ayarlama<\/h3>\n<p>Bu ad\u0131m, <code>chroot<\/code> ortam\u0131n\u0131 olu\u015fturmak i\u00e7in kritik \u00f6neme sahiptir. <code>ChrootDirectory<\/code> olarak belirledi\u011fimiz dizin ve onun \u00fcst dizinleri <code>root<\/code> kullan\u0131c\u0131s\u0131na ait olmal\u0131 ve di\u011fer kullan\u0131c\u0131lar taraf\u0131ndan yaz\u0131labilir olmamal\u0131d\u0131r. Bu k\u0131s\u0131tlama, <code>chroot<\/code> ka\u00e7\u0131\u015flar\u0131n\u0131 engellemek i\u00e7in OpenSSH taraf\u0131ndan zorunlu k\u0131l\u0131n\u0131r.<\/p>\n<p>\u00d6ncelikle, SFTP kullan\u0131c\u0131lar\u0131 i\u00e7in ana <code>chroot<\/code> dizinini olu\u015ftural\u0131m. \u00d6rne\u011fin, <code>\/sftp_root<\/code> ad\u0131nda bir dizin kullanabiliriz:<\/p>\n<pre><code class=\"language-bash\">sudo mkdir -p \/sftp_root<\/code><\/pre>\n<p>Bu dizinin sahibi <code>root<\/code> olmal\u0131 ve izinleri <code>755<\/code> veya <code>700<\/code> olmal\u0131d\u0131r (di\u011fer kullan\u0131c\u0131lar i\u00e7in yazma izni olmamal\u0131d\u0131r).<\/p>\n<pre><code class=\"language-bash\">sudo chown root:root \/sftp_root\nsudo chmod 755 \/sftp_root<\/code><\/pre>\n<p>\u015eimdi, SFTP kullan\u0131c\u0131s\u0131n\u0131n dosya y\u00fckleyebilece\u011fi bir dizin olu\u015ftural\u0131m. Bu dizin <code>chroot<\/code> dizininin i\u00e7inde olmal\u0131 ve SFTP kullan\u0131c\u0131s\u0131na ait olmal\u0131d\u0131r. \u00d6rne\u011fin, <code>\/sftp_root\/uploads<\/code> ad\u0131nda bir dizin olu\u015fturabiliriz:<\/p>\n<pre><code class=\"language-bash\">sudo mkdir -p \/sftp_root\/uploads<\/code><\/pre>\n<p>Bu <code>uploads<\/code> dizininin sahibi <code>sftpuser1<\/code> ve grubu <code>sftpusers<\/code> olmal\u0131d\u0131r. \u0130zinleri ise <code>775<\/code> olabilir, bu sayede kullan\u0131c\u0131 ve grup \u00fcyeleri bu dizine yazabilir.<\/p>\n<pre><code class=\"language-bash\">sudo chown sftpuser1:sftpusers \/sftp_root\/uploads\nsudo chmod 775 \/sftp_root\/uploads<\/code><\/pre>\n<p>E\u011fer birden fazla SFTP kullan\u0131c\u0131n\u0131z olacaksa ve her birinin kendi izole y\u00fckleme dizini olmas\u0131n\u0131 istiyorsan\u0131z, her kullan\u0131c\u0131 i\u00e7in <code>\/sftp_root\/sftpuser1_data<\/code>, <code>\/sftp_root\/sftpuser2_data<\/code> gibi ayr\u0131 dizinler olu\u015fturup ilgili kullan\u0131c\u0131lara atayabilirsiniz. Ya da t\u00fcm SFTP kullan\u0131c\u0131lar\u0131 i\u00e7in ortak bir <code>\/sftp_root\/shared_uploads<\/code> dizini de kullanabilirsiniz.<\/p>\n<p><strong>\u00d6nemli Not:<\/strong> <code>ChrootDirectory<\/code> olarak belirtilen dizin (<code>\/sftp_root<\/code>) ve onun t\u00fcm \u00fcst dizinleri, <code>root<\/code> kullan\u0131c\u0131s\u0131na ait olmal\u0131 ve yazma izni sadece <code>root<\/code> i\u00e7in olmal\u0131d\u0131r. E\u011fer bu kurala uyulmazsa, SSH servisi yeniden ba\u015flat\u0131ld\u0131\u011f\u0131nda hata verebilir veya kullan\u0131c\u0131lar ba\u011flanamayabilir.<\/p>\n<h3>Ad\u0131m 4: OpenSSH Sunucu Yap\u0131land\u0131rmas\u0131n\u0131 D\u00fczenleme<\/h3>\n<p>\u015eimdi, OpenSSH sunucusunun yap\u0131land\u0131rma dosyas\u0131n\u0131 (<code>sshd_config<\/code>) d\u00fczenleyerek <code>sftpusers<\/code> grubundaki kullan\u0131c\u0131lar i\u00e7in <code>chroot<\/code> ve <code>ForceCommand<\/code> ayarlar\u0131n\u0131 etkinle\u015ftirece\u011fiz.<\/p>\n<p>Yap\u0131land\u0131rma dosyas\u0131n\u0131 bir metin d\u00fczenleyici ile a\u00e7\u0131n (\u00f6rne\u011fin, <code>nano<\/code>):<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/ssh\/sshd_config<\/code><\/pre>\n<p>Dosyay\u0131 a\u00e7t\u0131ktan sonra, a\u015fa\u011f\u0131daki sat\u0131r\u0131 bulun:<\/p>\n<pre><code class=\"language-\">Subsystem sftp \/usr\/lib\/openssh\/sftp-server<\/code><\/pre>\n<p>Bu sat\u0131r\u0131n ba\u015f\u0131na <code>#<\/code> koyarak yorum sat\u0131r\u0131 haline getirin veya silin. OpenSSH&#8217;nin kendi dahili SFTP sunucusunu kullanaca\u011f\u0131m\u0131z i\u00e7in bu sat\u0131ra ihtiyac\u0131m\u0131z yok.<\/p>\n<p>Ard\u0131ndan, dosyan\u0131n en alt\u0131na veya uygun bir yere a\u015fa\u011f\u0131daki bloklar\u0131 ekleyin:<\/p>\n<pre><code class=\"language-\">Match Group sftpusers\n    ChrootDirectory \/sftp_root\n    ForceCommand internal-sftp\n    X11Forwarding no\n    AllowTcpForwarding no\n    PermitTunnel no\n    PermitAgentForwarding no<\/code><\/pre>\n<p>Bu direktiflerin a\u00e7\u0131klamalar\u0131 \u015funlard\u0131r:<\/p>\n<p>*   <strong><code>Match Group sftpusers<\/code><\/strong>: Bu bloktaki yap\u0131land\u0131rma ayarlar\u0131n\u0131n yaln\u0131zca <code>sftpusers<\/code> grubunun \u00fcyeleri i\u00e7in ge\u00e7erli olaca\u011f\u0131n\u0131 belirtir.<br \/>\n*   <strong><code>ChrootDirectory \/sftp_root<\/code><\/strong>: <code>sftpusers<\/code> grubundaki kullan\u0131c\u0131lar ba\u011fland\u0131\u011f\u0131nda, <code>\/sftp_root<\/code> dizini onlar\u0131n k\u00f6k dizini olarak ayarlan\u0131r. Kullan\u0131c\u0131lar bu dizinin d\u0131\u015f\u0131na \u00e7\u0131kamaz.<br \/>\n*   <strong><code>ForceCommand internal-sftp<\/code><\/strong>: Kullan\u0131c\u0131 ba\u011fland\u0131\u011f\u0131nda, normal bir shell oturumu ba\u015flatmak yerine, OpenSSH&#8217;nin dahili SFTP sunucusu \u00e7al\u0131\u015ft\u0131r\u0131l\u0131r. Bu, kullan\u0131c\u0131n\u0131n komut \u00e7al\u0131\u015ft\u0131rmas\u0131n\u0131 tamamen engeller.<br \/>\n*   <strong><code>X11Forwarding no<\/code><\/strong>: X11 oturumlar\u0131n\u0131n y\u00f6nlendirilmesini devre d\u0131\u015f\u0131 b\u0131rak\u0131r. G\u00fcvenlik i\u00e7in \u00f6nerilir.<br \/>\n*   <strong><code>AllowTcpForwarding no<\/code><\/strong>: TCP port y\u00f6nlendirmesini devre d\u0131\u015f\u0131 b\u0131rak\u0131r. G\u00fcvenlik i\u00e7in \u00f6nerilir.<br \/>\n*   <strong><code>PermitTunnel no<\/code><\/strong>: T\u00fcnel ayg\u0131t\u0131 y\u00f6nlendirmesini devre d\u0131\u015f\u0131 b\u0131rak\u0131r. G\u00fcvenlik i\u00e7in \u00f6nerilir.<br \/>\n*   <strong><code>PermitAgentForwarding no<\/code><\/strong>: SSH kimlik do\u011frulama arac\u0131s\u0131 (agent) y\u00f6nlendirmesini devre d\u0131\u015f\u0131 b\u0131rak\u0131r. G\u00fcvenlik i\u00e7in \u00f6nerilir.<\/p>\n<p>Bu eklemeleri yapt\u0131ktan sonra, dosyay\u0131 kaydedin ve kapat\u0131n (Nano&#8217;da <code>Ctrl+O<\/code>, <code>Enter<\/code>, <code>Ctrl+X<\/code>).<\/p>\n<h3>Ad\u0131m 5: SSH Servisini Yeniden Ba\u015flatma<\/h3>\n<p>Yap\u0131land\u0131rma de\u011fi\u015fikliklerinin etkili olmas\u0131 i\u00e7in SSH servisini yeniden ba\u015flatman\u0131z gerekir:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl restart ssh<\/code><\/pre>\n<p>Servisin ba\u015far\u0131yla yeniden ba\u015flat\u0131ld\u0131\u011f\u0131ndan emin olmak i\u00e7in durumunu kontrol edebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl status ssh<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131da <code>active (running)<\/code> ibaresini g\u00f6rmelisiniz. Herhangi bir hata varsa, <code>journalctl -xe<\/code> komutunu kullanarak g\u00fcnl\u00fckleri kontrol edebilirsiniz. Genellikle hatalar, <code>sshd_config<\/code> dosyas\u0131ndaki yanl\u0131\u015f s\u00f6zdizimi veya <code>ChrootDirectory<\/code> izinlerindeki sorunlardan kaynaklan\u0131r.<\/p>\n<h3>Ad\u0131m 6: Yap\u0131land\u0131rmay\u0131 Test Etme<\/h3>\n<p>\u015eimdi, SFTP kullan\u0131c\u0131s\u0131n\u0131n do\u011fru \u015fekilde yap\u0131land\u0131r\u0131ld\u0131\u011f\u0131ndan emin olmak i\u00e7in test edelim.<\/p>\n<p><strong>SFTP Ba\u011flant\u0131s\u0131n\u0131 Test Etme:<\/strong><\/p>\n<p>Bir SFTP istemcisi kullanarak (\u00f6rne\u011fin, FileZilla, WinSCP veya komut sat\u0131r\u0131 <code>sftp<\/code> arac\u0131) <code>sftpuser1<\/code> olarak sunucuya ba\u011flanmay\u0131 deneyin.<\/p>\n<p>Komut sat\u0131r\u0131 ile test etmek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">sftp sftpuser1@your_server_ip_or_hostname<\/code><\/pre>\n<p>Parolan\u0131z\u0131 girdikten sonra SFTP istemine d\u00fc\u015fmelisiniz. SFTP isteminde <code>ls<\/code> komutunu \u00e7al\u0131\u015ft\u0131r\u0131n. Yaln\u0131zca <code>\/sftp_root<\/code> i\u00e7indeki <code>uploads<\/code> dizinini g\u00f6rmelisiniz.<\/p>\n<pre><code class=\"language-\">sftp&gt; ls\nuploads\nsftp&gt; cd uploads\nsftp&gt; pwd\nRemote working directory: \/uploads<\/code><\/pre>\n<p>Bu dizine bir dosya y\u00fcklemeyi deneyin:<\/p>\n<pre><code class=\"language-bash\">sftp&gt; put local_file.txt<\/code><\/pre>\n<p>E\u011fer dosya ba\u015far\u0131yla y\u00fckleniyorsa ve <code>uploads<\/code> dizini d\u0131\u015f\u0131na \u00e7\u0131kam\u0131yorsan\u0131z, SFTP yap\u0131land\u0131rman\u0131z do\u011fru \u00e7al\u0131\u015f\u0131yor demektir.<\/p>\n<p><strong>SSH Kabuk Eri\u015fimini Test Etme:<\/strong><\/p>\n<p><code>sftpuser1<\/code> kullan\u0131c\u0131s\u0131n\u0131n shell eri\u015fimine sahip olmad\u0131\u011f\u0131n\u0131 do\u011frulamak i\u00e7in normal bir SSH ba\u011flant\u0131s\u0131 kurmay\u0131 deneyin:<\/p>\n<pre><code class=\"language-bash\">ssh sftpuser1@your_server_ip_or_hostname<\/code><\/pre>\n<p>Parolan\u0131z\u0131 girdikten sonra, ba\u011flant\u0131n\u0131n hemen kapanmas\u0131 veya &#8220;This account is currently not available.&#8221; gibi bir mesaj alman\u0131z gerekir. Bu, kullan\u0131c\u0131n\u0131n shell eri\u015fiminin ba\u015far\u0131yla engellendi\u011fini g\u00f6sterir.<\/p>\n<pre><code class=\"language-\">sftpuser1@your_server_ip_or_hostname's password:\nThis account is currently not available.\nConnection to your_server_ip_or_hostname closed.<\/code><\/pre>\n<p>Bu testler ba\u015far\u0131l\u0131 olursa, SFTP kullan\u0131c\u0131lar\u0131n\u0131z\u0131 shell eri\u015fimi olmadan g\u00fcvenli bir \u015fekilde yap\u0131land\u0131rm\u0131\u015fs\u0131n\u0131z demektir.<\/p>\n<h2>Geli\u015fmi\u015f Yap\u0131land\u0131rmalar ve G\u00fcvenlik \u0130pu\u00e7lar\u0131<\/h2>\n<p>Temel SFTP kurulumunu tamamlad\u0131ktan sonra, g\u00fcvenlik ve kullan\u0131\u015fl\u0131l\u0131\u011f\u0131 art\u0131rmak i\u00e7in baz\u0131 ek yap\u0131land\u0131rmalar ve ipu\u00e7lar\u0131 uygulayabilirsiniz.<\/p>\n<h3>SSH Anahtarlar\u0131 ile Kimlik Do\u011frulama<\/h3>\n<p>Parola tabanl\u0131 kimlik do\u011frulama yerine SSH anahtarlar\u0131 kullanmak, g\u00fcvenli\u011fi \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131r\u0131r. SSH anahtarlar\u0131, parola k\u0131rma sald\u0131r\u0131lar\u0131na kar\u015f\u0131 \u00e7ok daha dayan\u0131kl\u0131d\u0131r ve otomasyon i\u00e7in daha uygundur.<\/p>\n<p>SFTP kullan\u0131c\u0131s\u0131 i\u00e7in SSH anahtar\u0131 ile kimlik do\u011frulama yapmak i\u00e7in:<\/p>\n<p>1.  <strong>Anahtar \u00c7ifti Olu\u015fturma:<\/strong> Yerel makinenizde bir SSH anahtar \u00e7ifti olu\u015fturun (e\u011fer zaten yoksa):<\/p>\n<pre><code class=\"language-bash\">ssh-keygen -t rsa -b 4096 -C &quot;sftpuser1_key&quot;<\/code><\/pre>\n<p>    Bu komut, <code>~\/.ssh\/id_rsa<\/code> (\u00f6zel anahtar) ve <code>~\/.ssh\/id_rsa.pub<\/code> (genel anahtar) dosyalar\u0131n\u0131 olu\u015fturacakt\u0131r. \u00d6zel anahtar\u0131n\u0131z\u0131 asla payla\u015fmay\u0131n.<br \/>\n2.  <strong>Genel Anahtar\u0131 Sunucuya Kopyalama:<\/strong> Genel anahtar\u0131 SFTP kullan\u0131c\u0131s\u0131n\u0131n sunucudaki ev dizinine kopyalamal\u0131s\u0131n\u0131z. <code>ChrootDirectory<\/code> aktif oldu\u011fu i\u00e7in, kullan\u0131c\u0131n\u0131n <code>authorized_keys<\/code> dosyas\u0131, kullan\u0131c\u0131n\u0131n <em>ger\u00e7ek<\/em> ev dizininde olmal\u0131d\u0131r (yani <code>\/home\/sftpuser1\/.ssh\/authorized_keys<\/code>), <code>chroot<\/code> dizini i\u00e7inde de\u011fil. \u00c7\u00fcnk\u00fc kimlik do\u011frulama <code>chroot<\/code> uygulanmadan \u00f6nce ger\u00e7ekle\u015fir.<\/p>\n<pre><code class=\"language-bash\">ssh-copy-id -i ~\/.ssh\/id_rsa.pub sftpuser1@your_server_ip_or_hostname<\/code><\/pre>\n<p>    E\u011fer <code>ssh-copy-id<\/code> kurulu de\u011filse veya \u00e7al\u0131\u015fm\u0131yorsa, genel anahtar\u0131 manuel olarak kopyalayabilirsiniz:<\/p>\n<pre><code class=\"language-bash\"># Sunucuda, sftpuser1 olarak oturum a\u00e7\u0131n (e\u011fer nologin ise bu ad\u0131m atlan\u0131r, root olarak yap\u0131lmal\u0131)\n    sudo mkdir -p \/home\/sftpuser1\/.ssh\n    sudo chmod 700 \/home\/sftpuser1\/.ssh\n    sudo touch \/home\/sftpuser1\/.ssh\/authorized_keys\n    sudo chmod 600 \/home\/sftpuser1\/.ssh\/authorized_keys\n    sudo chown sftpuser1:sftpusers \/home\/sftpuser1\/.ssh \/home\/sftpuser1\/.ssh\/authorized_keys\n    \n    # Yerel makinenizden, genel anahtar\u0131n\u0131z\u0131 kopyalay\u0131n\n    cat ~\/.ssh\/id_rsa.pub | ssh sftpuser1@your_server_ip_or_hostname &quot;cat &gt;&gt; \/home\/sftpuser1\/.ssh\/authorized_keys&quot;<\/code><\/pre>\n<p>    <em>D\u00fczeltme:<\/em> <code>sftpuser1<\/code>&#8216;in shell&#8217;i <code>\/usr\/sbin\/nologin<\/code> oldu\u011fu i\u00e7in, <code>ssh sftpuser1@... \"cat >> ...\"<\/code> komutu \u00e7al\u0131\u015fmayacakt\u0131r. Bu nedenle, genel anahtar\u0131 <code>root<\/code> yetkileriyle do\u011frudan <code>\/home\/sftpuser1\/.ssh\/authorized_keys<\/code> dosyas\u0131na eklemeniz gerekir.<\/p>\n<pre><code class=\"language-bash\"># Yerel makinenizden genel anahtar\u0131n\u0131z\u0131 kopyalay\u0131n\n    PUBLIC_KEY=$(cat ~\/.ssh\/id_rsa.pub)\n    \n    # Sunucuda root olarak (veya sudo ile)\n    sudo mkdir -p \/home\/sftpuser1\/.ssh\n    echo &quot;$PUBLIC_KEY&quot; | sudo tee -a \/home\/sftpuser1\/.ssh\/authorized_keys\n    sudo chmod 700 \/home\/sftpuser1\/.ssh\n    sudo chmod 600 \/home\/sftpuser1\/.ssh\/authorized_keys\n    sudo chown sftpuser1:sftpusers \/home\/sftpuser1\/.ssh \/home\/sftpuser1\/.ssh\/authorized_keys<\/code><\/pre>\n<p>3.  <strong>Test Etme:<\/strong> Art\u0131k SFTP istemcinizden anahtar dosyas\u0131 ile ba\u011flanmay\u0131 deneyebilirsiniz. Parola sormadan ba\u011flanmal\u0131s\u0131n\u0131z.<\/p>\n<h3>Birden Fazla SFTP Kullan\u0131c\u0131s\u0131 Y\u00f6netimi<\/h3>\n<p>Yeni SFTP kullan\u0131c\u0131lar\u0131 eklemek, mevcut <code>sftpusers<\/code> grubunu ve <code>chroot<\/code> yap\u0131s\u0131n\u0131 kullanarak olduk\u00e7a basittir:<\/p>\n<p>1.  <strong>Yeni Kullan\u0131c\u0131 Olu\u015fturma:<\/strong> <code>sftpuser2<\/code> ad\u0131nda yeni bir kullan\u0131c\u0131 olu\u015fturun ve <code>sftpusers<\/code> grubuna ekleyin, shell&#8217;ini <code>nologin<\/code> olarak ayarlay\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo useradd -m -g sftpusers -s \/usr\/sbin\/nologin sftpuser2\n    sudo passwd sftpuser2<\/code><\/pre>\n<p>2.  <strong>Kullan\u0131c\u0131ya \u00d6zel Dizin Olu\u015fturma:<\/strong> Her kullan\u0131c\u0131n\u0131n kendi izole dizini olmas\u0131n\u0131 istiyorsan\u0131z, <code>\/sftp_root<\/code> i\u00e7inde kullan\u0131c\u0131ya \u00f6zel bir dizin olu\u015fturun ve izinlerini ayarlay\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo mkdir -p \/sftp_root\/sftpuser2_data\n    sudo chown sftpuser2:sftpusers \/sftp_root\/sftpuser2_data\n    sudo chmod 775 \/sftp_root\/sftpuser2_data<\/code><\/pre>\n<p>    Bu durumda, <code>sftpuser2<\/code> ba\u011fland\u0131\u011f\u0131nda <code>\/sftp_root<\/code>&#8216;u k\u00f6k olarak g\u00f6recek ve <code>sftpuser2_data<\/code> dizinine eri\u015febilecektir.<br \/>\n3.  <strong>SSH Anahtarlar\u0131 (iste\u011fe ba\u011fl\u0131):<\/strong> E\u011fer SSH anahtarlar\u0131 kullanacaksan\u0131z, <code>sftpuser2<\/code> i\u00e7in de yukar\u0131daki ad\u0131mlar\u0131 tekrarlay\u0131n.<\/p>\n<p>Bu yap\u0131land\u0131rma, t\u00fcm SFTP kullan\u0131c\u0131lar\u0131n\u0131n ayn\u0131 <code>chroot<\/code> dizini i\u00e7inde kalmas\u0131n\u0131 sa\u011flar, ancak her birine kendi \u00f6zel dizinlerini veya payla\u015f\u0131lan bir dizini atayabilirsiniz.<\/p>\n<h3>Firewall Kurallar\u0131 (UFW)<\/h3>\n<p>Sunucunuzda bir g\u00fcvenlik duvar\u0131 (firewall) \u00e7al\u0131\u015f\u0131yorsa (Ubuntu&#8217;da UFW yayg\u0131nd\u0131r), SSH\/SFTP trafi\u011fine izin verdi\u011finizden emin olman\u0131z gerekir. SSH varsay\u0131lan olarak 22 numaral\u0131 portu kullan\u0131r.<\/p>\n<pre><code class=\"language-bash\">sudo ufw allow OpenSSH\nsudo ufw enable # E\u011fer firewall kapal\u0131ysa\nsudo ufw status<\/code><\/pre>\n<p>Bu komutlar, 22 numaral\u0131 port \u00fczerinden gelen SSH ba\u011flant\u0131lar\u0131na izin verir.<\/p>\n<h3>G\u00fcnl\u00fck Y\u00f6netimi (Logging)<\/h3>\n<p>SFTP ba\u011flant\u0131lar\u0131n\u0131 ve olas\u0131 hatalar\u0131 izlemek i\u00e7in sistem g\u00fcnl\u00fcklerini d\u00fczenli olarak kontrol etmek \u00f6nemlidir. SSH ba\u011flant\u0131 g\u00fcnl\u00fckleri genellikle <code>\/var\/log\/auth.log<\/code> dosyas\u0131nda bulunur.<\/p>\n<pre><code class=\"language-bash\">sudo tail -f \/var\/log\/auth.log<\/code><\/pre>\n<p>Bu komut, <code>auth.log<\/code> dosyas\u0131n\u0131n sonunu ger\u00e7ek zamanl\u0131 olarak g\u00f6sterir ve SFTP ba\u011flant\u0131 giri\u015fimlerini, ba\u015far\u0131lar\u0131n\u0131 veya ba\u015far\u0131s\u0131zl\u0131klar\u0131n\u0131 izlemenize olanak tan\u0131r.<\/p>\n<h3>Performans ve Kaynak Y\u00f6netimi<\/h3>\n<p>K\u00fc\u00e7\u00fck ve orta \u00f6l\u00e7ekli SFTP sunucular\u0131 i\u00e7in bu yap\u0131land\u0131rma genellikle yeterlidir. Ancak, ayn\u0131 anda \u00e7ok say\u0131da SFTP kullan\u0131c\u0131s\u0131 ba\u011flan\u0131yorsa veya \u00e7ok b\u00fcy\u00fck dosyalar transfer ediliyorsa, sunucu kaynaklar\u0131n\u0131n (CPU, RAM, disk I\/O) izlenmesi gerekebilir. <code>internal-sftp<\/code> mod\u00fcl\u00fc genellikle olduk\u00e7a verimlidir, ancak yo\u011fun kullan\u0131m durumlar\u0131nda performans darbo\u011fazlar\u0131n\u0131 tespit etmek i\u00e7in sistem izleme ara\u00e7lar\u0131 kullanmak faydal\u0131 olabilir.<\/p>\n<h3>Ubuntu S\u00fcr\u00fcmleri Aras\u0131 Uyumluluk<\/h3>\n<p>Bu makale Ubuntu 18.04 i\u00e7in yaz\u0131lm\u0131\u015f olsa da, OpenSSH sunucusunun <code>ChrootDirectory<\/code> ve <code>ForceCommand internal-sftp<\/code> \u00f6zellikleri, Ubuntu 20.04 LTS ve Ubuntu 22.04 LTS gibi daha yeni s\u00fcr\u00fcmlerde de ayn\u0131 \u015fekilde \u00e7al\u0131\u015f\u0131r. Temel OpenSSH yap\u0131land\u0131rma mant\u0131\u011f\u0131 ve Linux kullan\u0131c\u0131\/dizin izinleri prensipleri de\u011fi\u015fmedi\u011fi i\u00e7in, bu rehberdeki ad\u0131mlar genellikle di\u011fer g\u00fcncel Ubuntu s\u00fcr\u00fcmleri i\u00e7in de ge\u00e7erlidir.<\/p>\n<h2>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h2>\n<p>SFTP&#8217;nin shell eri\u015fimi olmadan yap\u0131land\u0131r\u0131lmas\u0131yla ilgili s\u0131k\u00e7a sorulan baz\u0131 sorular\u0131 ve cevaplar\u0131n\u0131 a\u015fa\u011f\u0131da bulabilirsiniz.<\/p>\n<h3>SFTP ile FTP aras\u0131ndaki fark nedir?<\/h3>\n<p>SFTP (Secure File Transfer Protocol) ve FTP (File Transfer Protocol) her ikisi de dosya transferi i\u00e7in kullan\u0131lan protokollerdir, ancak temel farklar\u0131 g\u00fcvenliktedir. FTP, verileri (kullan\u0131c\u0131 adlar\u0131, \u015fifreler ve dosya i\u00e7erikleri dahil) \u015fifrelemeden a\u00e7\u0131k metin olarak g\u00f6nderir, bu da onu dinlemeye kar\u015f\u0131 savunmas\u0131z hale getirir. SFTP ise SSH (Secure Shell) protokol\u00fc \u00fczerinden \u00e7al\u0131\u015f\u0131r ve t\u00fcm ileti\u015fimi \u015fifreler. Bu, SFTP&#8217;yi \u00e7ok daha g\u00fcvenli bir se\u00e7enek haline getirir. Ayr\u0131ca, SFTP&#8217;nin ayr\u0131 bir kontrol ve veri kanal\u0131 yoktur; t\u00fcm ileti\u015fim tek bir kanalda g\u00fcvenli bir \u015fekilde ger\u00e7ekle\u015fir.<\/p>\n<h3>Neden <code>chroot<\/code> dizini root&#8217;a ait olmal\u0131 ve yaz\u0131labilir olmamal\u0131?<\/h3>\n<p><code>ChrootDirectory<\/code> olarak belirlenen dizin ve onun t\u00fcm \u00fcst dizinleri, g\u00fcvenlik nedeniyle <code>root<\/code> kullan\u0131c\u0131s\u0131na ait olmal\u0131 ve sadece <code>root<\/code> taraf\u0131ndan yaz\u0131labilir olmal\u0131d\u0131r. Bu kural, OpenSSH taraf\u0131ndan <code>chroot<\/code> ka\u00e7\u0131\u015flar\u0131n\u0131 (chroot jailbreak) engellemek i\u00e7in zorunlu k\u0131l\u0131nm\u0131\u015ft\u0131r. E\u011fer bir sald\u0131rgan <code>chroot<\/code> dizinini yazabilirse, k\u00f6t\u00fc ama\u00e7l\u0131 dosyalar yerle\u015ftirebilir veya sembolik ba\u011flant\u0131lar olu\u015fturarak <code>chroot<\/code> ortam\u0131ndan ka\u00e7abilir ve sistemin geri kalan\u0131na eri\u015fim sa\u011flayabilir. <code>root<\/code> sahipli\u011fi ve k\u0131s\u0131tl\u0131 izinler, bu t\u00fcr sald\u0131r\u0131lar\u0131n \u00f6nlenmesine yard\u0131mc\u0131 olur.<\/p>\n<h3>SFTP kullan\u0131c\u0131s\u0131 neden shell eri\u015fimine sahip olmamal\u0131?<\/h3>\n<p>SFTP kullan\u0131c\u0131s\u0131n\u0131n shell eri\u015fimine sahip olmamas\u0131, g\u00fcvenlik ilkesi olan &#8220;en az ayr\u0131cal\u0131k&#8221; (least privilege) ilkesini uygulamak i\u00e7indir. Bir kullan\u0131c\u0131ya shell eri\u015fimi vermek, o kullan\u0131c\u0131n\u0131n sunucu \u00fczerinde komut \u00e7al\u0131\u015ft\u0131rma yetene\u011fine sahip oldu\u011fu anlam\u0131na gelir. Bu durum, k\u00f6t\u00fc niyetli bir kullan\u0131c\u0131n\u0131n veya yanl\u0131\u015fl\u0131kla hata yapan bir kullan\u0131c\u0131n\u0131n sistem dosyalar\u0131n\u0131 de\u011fi\u015ftirmesine, uygulamalar\u0131 \u00e7al\u0131\u015ft\u0131rmas\u0131na veya sunucu hakk\u0131nda hassas bilgiler toplamas\u0131na olanak tan\u0131yabilir. SFTP&#8217;yi shell eri\u015fimi olmadan yap\u0131land\u0131rmak, kullan\u0131c\u0131n\u0131n yaln\u0131zca dosya transferi yapmas\u0131na izin verir ve sistem \u00fczerindeki riskli eylemlerini s\u0131n\u0131rlar.<\/p>\n<h3>Ubuntu 20.04 veya 22.04 i\u00e7in de bu y\u00f6ntem ge\u00e7erli mi?<\/h3>\n<p>Evet, bu makalede a\u00e7\u0131klanan y\u00f6ntem ve ad\u0131mlar, Ubuntu 20.04 LTS (Focal Fossa) ve Ubuntu 22.04 LTS (Jammy Jellyfish) gibi daha yeni Ubuntu s\u00fcr\u00fcmleri i\u00e7in de b\u00fcy\u00fck \u00f6l\u00e7\u00fcde ge\u00e7erlidir. OpenSSH sunucusunun temel yap\u0131land\u0131rma direktifleri (<code>ChrootDirectory<\/code>, <code>ForceCommand internal-sftp<\/code> vb.) ve Linux&#8217;ta kullan\u0131c\u0131, grup ve dosya izinleri y\u00f6netimi prensipleri, bu s\u00fcr\u00fcmler aras\u0131nda \u00f6nemli bir de\u011fi\u015fiklik g\u00f6stermemi\u015ftir. Bu nedenle, bu rehberdeki ad\u0131mlar\u0131 yeni Ubuntu s\u00fcr\u00fcmlerinde de ba\u015far\u0131yla uygulayabilirsiniz.<\/p>\n<h3>SFTP kullan\u0131c\u0131s\u0131 kendi dizinini olu\u015fturabilir mi?<\/h3>\n<p>SFTP kullan\u0131c\u0131s\u0131, <code>chroot<\/code> dizininin (\u00f6rne\u011fin <code>\/sftp_root<\/code>) do\u011frudan k\u00f6k\u00fcnde yeni dizinler olu\u015fturamaz, \u00e7\u00fcnk\u00fc bu dizin <code>root<\/code>&#8216;a aittir ve yazma izni yoktur. Ancak, <code>chroot<\/code> dizini i\u00e7inde SFTP kullan\u0131c\u0131s\u0131na ait veya yazma izni olan bir alt dizin (\u00f6rne\u011fin <code>\/sftp_root\/uploads<\/code>) varsa, kullan\u0131c\u0131 bu alt dizin i\u00e7inde yeni dizinler ve dosyalar olu\u015fturabilir. Bu, kullan\u0131c\u0131n\u0131n sadece kendisine ayr\u0131lm\u0131\u015f alan i\u00e7inde de\u011fi\u015fiklik yapabilmesini sa\u011flar.<\/p>\n<h3>SFTP ba\u011flant\u0131lar\u0131 i\u00e7in farkl\u0131 bir port kullanabilir miyim?<\/h3>\n<p>Evet, g\u00fcvenlik amac\u0131yla SSH\/SFTP ba\u011flant\u0131lar\u0131 i\u00e7in varsay\u0131lan 22 numaral\u0131 port yerine farkl\u0131 bir port kullanabilirsiniz. Bunun i\u00e7in <code>sshd_config<\/code> dosyas\u0131ndaki <code>Port 22<\/code> sat\u0131r\u0131n\u0131 bulup istedi\u011finiz port numaras\u0131yla de\u011fi\u015ftirmeniz ve SSH servisini yeniden ba\u015flatman\u0131z gerekir. \u00d6rne\u011fin, <code>Port 2222<\/code>. Yeni portu g\u00fcvenlik duvar\u0131n\u0131zda da a\u00e7may\u0131 unutmay\u0131n. Bu, port taramas\u0131 yapan basit botlara kar\u015f\u0131 bir miktar koruma sa\u011flayabilir, ancak deneyimli sald\u0131rganlar i\u00e7in cayd\u0131r\u0131c\u0131 de\u011fildir.<\/p>\n<h2>Sonu\u00e7<\/h2>\n<p>Ubuntu 18.04 \u00fczerinde shell eri\u015fimi olmadan SFTP&#8217;yi etkinle\u015ftirmek, sunucu g\u00fcvenli\u011fini art\u0131rmak ve kullan\u0131c\u0131lara kontroll\u00fc dosya transferi yetenekleri sa\u011flamak i\u00e7in g\u00fc\u00e7l\u00fc ve esnek bir y\u00f6ntemdir. <code>ChrootDirectory<\/code> ve <code>ForceCommand internal-sftp<\/code> direktiflerini kullanarak, kullan\u0131c\u0131lar\u0131 dosya sisteminin belirli bir b\u00f6l\u00fcm\u00fcyle s\u0131n\u0131rlayabilir ve komut \u00e7al\u0131\u015ft\u0131rma yeteneklerini tamamen engelleyebilirsiniz.<\/p>\n<p>Bu rehberde ad\u0131m ad\u0131m g\u00f6sterilen yap\u0131land\u0131rma s\u00fcreci, g\u00fcvenlik \u00f6nlemleri, izin ayarlar\u0131 ve test ad\u0131mlar\u0131, sunucunuzda sa\u011flam ve g\u00fcvenli bir SFTP ortam\u0131 olu\u015fturman\u0131za yard\u0131mc\u0131 olacakt\u0131r. SSH anahtarlar\u0131yla kimlik do\u011frulama, birden fazla kullan\u0131c\u0131 y\u00f6netimi ve d\u00fczenli g\u00fcnl\u00fck izleme gibi geli\u015fmi\u015f ipu\u00e7lar\u0131n\u0131 uygulayarak sisteminizin g\u00fcvenli\u011fini daha da peki\u015ftirebilirsiniz. Bu sayede, hem sunucunuzun b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc koruyacak hem de kullan\u0131c\u0131lara ihtiya\u00e7 duyduklar\u0131 g\u00fcvenli dosya transferi hizmetini sunabileceksiniz.<\/p>\n<div class=\"github-example-link\"><strong>\u00d6rnek kod:<\/strong> <a href=\"https:\/\/github.com\/fatihsoysalcom\/sftp-only-user-setup-ubuntu\" target=\"_blank\" rel=\"noopener noreferrer\">github.com\/fatihsoysalcom\/sftp-only-user-setup-ubuntu<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"Ubuntu 18. 04 \u00dczerinde Shell Eri\u015fimi Olmadan SFTP Nas\u0131l Etkinle\u015ftirilir?","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1468],"tags":[],"class_list":{"0":"post-42068","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-ubuntu","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Ubuntu 18.04 \u00dczerinde Shell Eri\u015fimi Olmadan SFTP Nas\u0131l Etkinle\u015ftirilir? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-shell-erisimi-olmadan-sftp-nasil-etkinlestirilir\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ubuntu 18.04 \u00dczerinde Shell Eri\u015fimi Olmadan SFTP Nas\u0131l Etkinle\u015ftirilir?\" \/>\n<meta property=\"og:description\" content=\"Ubuntu 18. 04 \u00dczerinde Shell Eri\u015fimi Olmadan SFTP Nas\u0131l Etkinle\u015ftirilir?\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-shell-erisimi-olmadan-sftp-nasil-etkinlestirilir\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-05-26T05:00:57+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-26T05:01:31+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"20 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-shell-erisimi-olmadan-sftp-nasil-etkinlestirilir\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-shell-erisimi-olmadan-sftp-nasil-etkinlestirilir\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Ubuntu 18.04 \u00dczerinde Shell Eri\u015fimi Olmadan SFTP Nas\u0131l Etkinle\u015ftirilir?\",\"datePublished\":\"2026-05-26T05:00:57+00:00\",\"dateModified\":\"2026-05-26T05:01:31+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-shell-erisimi-olmadan-sftp-nasil-etkinlestirilir\/\"},\"wordCount\":3392,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Ubuntu\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-shell-erisimi-olmadan-sftp-nasil-etkinlestirilir\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-shell-erisimi-olmadan-sftp-nasil-etkinlestirilir\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-shell-erisimi-olmadan-sftp-nasil-etkinlestirilir\/\",\"name\":\"Ubuntu 18.04 \u00dczerinde Shell Eri\u015fimi Olmadan SFTP Nas\u0131l Etkinle\u015ftirilir? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-05-26T05:00:57+00:00\",\"dateModified\":\"2026-05-26T05:01:31+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-shell-erisimi-olmadan-sftp-nasil-etkinlestirilir\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-shell-erisimi-olmadan-sftp-nasil-etkinlestirilir\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-shell-erisimi-olmadan-sftp-nasil-etkinlestirilir\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ubuntu 18.04 \u00dczerinde Shell Eri\u015fimi Olmadan SFTP Nas\u0131l Etkinle\u015ftirilir?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Ubuntu 18.04 \u00dczerinde Shell Eri\u015fimi Olmadan SFTP Nas\u0131l Etkinle\u015ftirilir? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-shell-erisimi-olmadan-sftp-nasil-etkinlestirilir\/","og_locale":"tr_TR","og_type":"article","og_title":"Ubuntu 18.04 \u00dczerinde Shell Eri\u015fimi Olmadan SFTP Nas\u0131l Etkinle\u015ftirilir?","og_description":"Ubuntu 18. 04 \u00dczerinde Shell Eri\u015fimi Olmadan SFTP Nas\u0131l Etkinle\u015ftirilir?","og_url":"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-shell-erisimi-olmadan-sftp-nasil-etkinlestirilir\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-05-26T05:00:57+00:00","article_modified_time":"2026-05-26T05:01:31+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"20 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-shell-erisimi-olmadan-sftp-nasil-etkinlestirilir\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-shell-erisimi-olmadan-sftp-nasil-etkinlestirilir\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Ubuntu 18.04 \u00dczerinde Shell Eri\u015fimi Olmadan SFTP Nas\u0131l Etkinle\u015ftirilir?","datePublished":"2026-05-26T05:00:57+00:00","dateModified":"2026-05-26T05:01:31+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-shell-erisimi-olmadan-sftp-nasil-etkinlestirilir\/"},"wordCount":3392,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Ubuntu"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-shell-erisimi-olmadan-sftp-nasil-etkinlestirilir\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-shell-erisimi-olmadan-sftp-nasil-etkinlestirilir\/","url":"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-shell-erisimi-olmadan-sftp-nasil-etkinlestirilir\/","name":"Ubuntu 18.04 \u00dczerinde Shell Eri\u015fimi Olmadan SFTP Nas\u0131l Etkinle\u015ftirilir? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-05-26T05:00:57+00:00","dateModified":"2026-05-26T05:01:31+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-shell-erisimi-olmadan-sftp-nasil-etkinlestirilir\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-shell-erisimi-olmadan-sftp-nasil-etkinlestirilir\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-shell-erisimi-olmadan-sftp-nasil-etkinlestirilir\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Ubuntu 18.04 \u00dczerinde Shell Eri\u015fimi Olmadan SFTP Nas\u0131l Etkinle\u015ftirilir?"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/42068","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=42068"}],"version-history":[{"count":2,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/42068\/revisions"}],"predecessor-version":[{"id":42070,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/42068\/revisions\/42070"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=42068"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=42068"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=42068"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}