Ç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 ssh
SSH’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-server
Aynısını pacman komutunu kullanarak Arch Linux’ta da yapabilirsiniz:
sudo pacman -S openssh
SFTP 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_group
Bir 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_user
Kullanı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_files
Dizine 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_files
SSH 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_config
Dosyanı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_config
Dosyada, varsayılan bağlantı noktası değeri 22 olan bir satır bulun:
#Port 22
Satı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 sshd
Oturum 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@HOST
Ek 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/ls
Bu, 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/folder
Dizinleri 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/location
Bu, 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/server
Dizin aktarımlarını sürdürmek için -r
parametresini eklemeniz yeterlidir:
reput -r /home/username/Desktop/bin bin
Bir 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 -l
Dosyaları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