
- SFTP Nedir?
- SSH ve OpenSSH Sunucusunu Kurma
- SFTP için Kullanıcılar, Gruplar ve Dizinler Oluşturma
- SSH Sunucusunu Yapılandırma
- (İsteğe bağlı) SFTP Bağlantı Noktasını Değiştirme
- Oturum Açma ve Sunucuyu Kullanma
- Dosyaları İndirme
- Dosya Yükleme
- Aktarımları Sürdür ve Boşluk İçeren Yolları Kullan
- Diğer kullanımlar
- Sıkça Sorulan Sorular
Çoğu kişi, Linux sunucularına veya Linux sunucularından dosya aktarmaları gerektiğinde FileZilla, WinSCP veya diğer FTP programları gibi yardımcı programları tercih eder. SFTP, orijinal FTP protokolüne güvenli bir alternatiftir. Güvenli olmayan sürümüyle çoğunlukla aynı işlevleri yerine getirir, ancak ek bir şifreleme katmanı ile. Bunu başarmak için, kendisine şifreleme yetenekleri sağlayan SSH protokolünü kullanır. Linux sisteminizde bir SFTP sunucusu kurmak, burada gösterdiğimiz birden çok adımı içerir.
SFTP Nedir?
SFTP (Güvenli Dosya Aktarım Protokolü), dosyaları bir istemciden sunucuya aktarmak için bir ağ protokolüdür. FTP’den Dosya Aktarım Protokolü farklı olarak SFTP, gönderilen verileri şifrelemek için SSH (Güvenli Kabuk) protokolünü kullanır. 1990’larda SSH protokolünün geliştirilmesinden de sorumlu olan bilgisayar bilimcileri Tatu Ylönen ve Sami Lehtinen tarafından geliştirilmiştir. Ancak, modern versiyon IETF (İnternet Mühendisliği Görev Gücü) tarafından geliştirilmiştir.
Adından da anlaşılacağı gibi, yalnızca dosya aktarım işlemlerini gerçekleştirdiğini düşündürse de, uzak dosya sistemi protokolü olarak tanımlanabilir. Bir istemciden alıcı sunucuya SFTP kullanarak bir dosya gönderirken, veriler hedefe gönderilmeden önce şifrelenir. Gönderilen veriler bir “başkası” tarafından ele geçirilirse, bu üçüncü tarafça şifresi kolayca çözülemez.
SSH ve OpenSSH Sunucusunu Kurma
SSH ve OpenSSH sunucusunu kurarak SFTP sunucusunu kurma işlemine başlıyoruz.
Çoğu Linux kurulumunda varsayılan olarak zaten SSH kuruludur, ancak sisteminizde yoksa, Advanced Packaging Tool’un apt komutunu kullanarak kurabilirsiniz:
sudo apt install sshSSH’yi kurduktan sonra, -V bayrağıyla ssh komutunu çalıştırarak sürümünü kontrol edebilirsiniz:
ssh -V
OpenSSH Sunucusunu, örneğin apt komutunu kullanarak Debian ve Ubuntu sistemlerine kurabilirsiniz:
sudo apt install openssh-serverAynısını pacman komutunu kullanarak Arch Linux’ta da yapabilirsiniz:
sudo pacman -S opensshSFTP için Kullanıcılar, Gruplar ve Dizinler Oluşturma
Linux’taki farklı servislerin kendi kullanıcılarını, gruplarını ve dizinlerini kullanması yaygın bir tavsiyedir.
SFTP kullanıcıları için bir grup oluşturarak başlayın. Bu, groupadd komutu kullanılarak gerçekleştirilir:
sudo groupadd sftp_groupBir kullanıcı oluşturabilir ve onu, useradd komutunu ve kullanıcının parçası olacağı grubu belirtmek için kullanılan -g bayrağını kullanarak oluşturulan gruba ekleyebilirsiniz:
sudo useradd -g sftp_group sftp_userKullanıcıyı oluşturduktan sonra passwd komutunu kullanarak ona bir parola atayın:
sudo passwd sftp_user
Yeni oluşturulan kullanıcı için varsayılan dizini oluşturun:
sudo mkdir -p /data/sftp_user/uploaded_filesDizine gerekli izinleri vermek için chown komutunu kullanın:
sudo chown -R root:sftp_group /data/sftp_user
sudo chown -R sftp_user:sftp_group /data/sftp_user/uploaded_filesSSH Sunucusunu Yapılandırma
Bir SFTP sunucusu kurmak için bir sonraki adım, kullanacağı SSH sunucusunu yapılandırmaktır.
Kullanıcının sunucuya bağlanırken SSH kabuğu yerine SFTP kabuğunu kullanması için “/etc/ssh/” içinde bulunan “sshd_config” dosyasını düzenleyin.
Varsayılan olarak birçok Linux kurulumunda bulunan yaygın olarak kullanılan Nano düzenleyiciyi kullanarak dosyayı kolayca düzenleyebilirsiniz:
sudo nano /etc/ssh/sshd_configDosyanın en altına aşağıdakileri ekleyin:
Match Group sftp_group
ChrootDirectory /data/%u
ForceCommand internal-sftp
SSH hizmetini yeniden başlatın:
sudo systemtl restart sshd(İsteğe bağlı) SFTP Bağlantı Noktasını Değiştirme
SFTP sunucusunun kullandığı bağlantı noktasını 22 varsayılan değerinden seçtiğiniz seçeneğe değiştirmek istiyorsanız, “sshd_config” dosyasını bir kez daha düzenlemeniz gerekir.
Nano düzenleyiciyi kullanarak dosyayı bir kez daha düzenleyin:
sudo nano /etc/ssh/sshd_configDosyada, varsayılan bağlantı noktası değeri 22 olan bir satır bulun:
#Port 22Satırı yorumlamak için kullanılan karma (#) işaretini kaldırabilir ve bağlantı noktası değeri seçiminizi ekleyebilirsiniz. Benim durumumda değeri 1111 olarak değiştiriyorum:
Port 1111Şimdi sadece dosyayı kaydedin

ve sunucuyu yeniden başlatın:
sudo systemctl restart sshdOturum Açma ve Sunucuyu Kullanma
Sunucu kurulu ve yapılandırılmışsa, kullanıma hazırdır. SSH tarafından sağlanan şifreli bir oturumla dosyaları kolayca yükleyebilir ve indirebilirsiniz.
Giriş yapmadan önce, sağlanan kılavuza bir göz atmaktan zarar gelmez:
sftp -h
Kullanıcı adını ve sunucu IP’sini veya ana bilgisayar adını aşağıdaki biçimde sağlayarak sunucuda oturum açın:
sftp USER@HOSTEk olarak, -P bayrağını kullanarak SFTP sunucunuzun kullandığı bağlantı noktasını (varsayılan) olarak 22 belirtebilirsiniz:
sftp USER@HOST -P <PORT>Giriş yaptığınızda, bir SFTP kabuğu ile karşılaşacaksınız.
help yazarak bir kılavuzu görüntüleyin.

Dosyaları İndirme
Bir dosyayı indirmek için:
get /path/to/file/on/serverÖrnek:
get /bin/lsBu, sunucuda oturum açmadan önce yerel olarak bulunduğunuz dizine indirilir. Belirli bir yerel dizine indirmek için:
get /path/to/file/on/server /path/to/local/folderDizinleri kopyalamak için, komuta özyinelemeli anlamına gelen -r parametresini eklemeniz gerekir.
get -r /bin /home/username/Desktop/bin
Yerel olarak oluşturmak istediğiniz yeni dizin için bu durumda “/home/username/Desktop/bin” gibi bir ad eklemeyi unutmayın. get -r /bin /home/username/Desktop kullanırsanız, dosyalar doğrudan Masaüstüne kopyalanacaktır. Dizinin kendisi değil, kopyalanan dosyalar olduğuna dikkat edin.
Dosya Yükleme
Dosyaları veya dizinleri yüklemek aynı ilkeleri takip eder. Tek istisna, yolların tersine çevrilmesidir, yani önce yerel dosya/dizini, ardından uzak yolu belirtirsiniz.
Başlangıç olarak, put komutunu kullanarak dosyaları sunucuya yükleyin:
put /path/to/local/content /path/to/remote/locationBu, uzak tarafta “bin” adında yeni bir dizin oluşturur.
Aktarımları Sürdür ve Boşluk İçeren Yolları Kullan
Kesintiye uğrayan büyük bir dosyayı aktardığınızda, önceki komutu reput ve reget ile değiştirerek devam edebilirsiniz. Kaynak ve hedefin tam olarak eşleşmesi için geçen sefer kullandığınız yolları kullandığınızdan emin olun.
reget /path/to/file/on/server /path/to/local/file
reput /path/to/local/file /path/to/file/on/serverDizin aktarımlarını sürdürmek için -r parametresini eklemeniz yeterlidir:
reput -r /home/username/Desktop/bin binBir dosyanın yolu boşluk içeriyorsa, onu tırnak içine alın:
put "/home/username/My Documents/Files"Diğer kullanımlar
ls komutunu kullanarak dosyaları ve dizinleri listeleyebilirsiniz:
ls -lDosyaların izinleri de chmod komutu kullanılarak değiştirilebilir:
chmod <PERMISSION> <FILE>Ek olarak, mkdir komutunu kullanarak yeni bir dizin oluşturabilirsiniz:
mkdir <DIRECTORY_NAME>Sıkça Sorulan Sorular
1. Bir SFTP istemcisi kurmam gerekiyor mu?
Çoğu durumda hayır, çünkü çoğu Linux sistemi varsayılan olarak kurulu bir terminal tabanlı SFTP istemcisi ile birlikte gelir.
2. Açık anahtar kimlik doğrulamasını kullanabilir miyim?
Evet, kimlik doğrulama yöntemi olarak parola yerine ortak anahtar kimlik doğrulamasını kullanabilirsiniz. Kurulumu oldukça basittir ve sunucunuz için ek güvenlik sağlar.
3. Aynı anda bir SSH sunucusunu barındırabilir miyim?
Evet. Ancak, SFTP sunucunuzun SSH sunucusuyla aynı bağlantı noktasını kullanmadığından emin olmanız gerekir.
Source: maketecheasier


