SFTP Nedir ve Nasıl Kullanılır? (SSH Dosya Transfer Protokolü)
FTP, bilgisayarlar arasında dosya ve veri transferinin standart yöntemidir ancak günümüzün güvenliğe önem verilen ortamında git gide eskimeye başlamıştır. Tam olarak bu noktada, özellikle de VPS hosting kullanıcıları için kullanışlı olan SFTP devreye girmektedir.
Bu rehberde güvenli dosya transferi için SFTP’yi nasıl kullanacağınızı ve buna ek olarak diğer kullanışlı komutların nasıl çalıştığını anlatacağız.
SFTP Kullanarak Bağlantı Nasıl Kurulur?
SFTP, SSH’in bir alt sistemidir. Bu nedenden dolayı da bütün SSH doğrulama yöntemlerini destekler. SFTP kurulumu ve şifre doğrulaması kolay olsa da şifresiz SFTP girişi için SSH anahtarları oluşturmak çok daha kolay ve güvenlidir.
SSH anahtarlarınızı nasıl oluşturacağınızı öğrenmek için bu rehbere göz atın. Hazır olduktan sonra SFTP ile bağlantı kurmak için aşağıdaki adımları takip edin:
- Aşağıdaki komutlardan birini kullanarak SSH erişiminizi kontrol edin:
ssh user@sunucu_ipadresi ssh user@uzakhost_domainadi
- İşiniz bittikten sonra herhangi bir hatayla karşılaşmazsanız oturumdan çıkın.
- Aşağıdaki komutlarla bir SFTP bağlantısı kurun:
sftp user@server_ipaddress sftp user@uzakhost_domainadi
- Eğer özel bir SSH port’u kullanıyorsanız SFTP port’unu değiştirmek için aşağıdaki komutlardan birini kullanın:
sftp -oPort=customport user@sunucu_ipadresi sftp -oPort=customport user@uzakhost_domainadi
- İşte komutun örnek kullanımı:
sftp -oPort=49166 user@31.220.57.32
Bağlantı kurduktan sonra bir SFTP istemi göreceksiniz.
SFTP Kullanarak Dosya Transferi Nasıl Yapılır?
Şimdiyse SFTP kullanarak uzak sunucudan yerel makineye dosya transferi nasıl yapılır göstereceğiz.
NOT: Dosyalarınızı WinSCP veya FileZilla gibi SFTP istemcilerini de kullanarak transfer edebilirsiniz. Eğer FileZilla ilginizi çekiyorsa FileZilla ile ilgili rehberimize buradan ulaşabilirsiniz.
Sunucudan Yerel Sisteme Dosya Transferi
Başlangıç için hangi yerel ve uzak dizini kullandığımızı kontrol edelim. Bunun için bu SFTP komutlarını kullanacağız:
sftp> lpwd Local directory: /LocalDirectory sftp> pwd Remote directory: /RemoteDirectory
Şimdiyse get komutunu kullanarak uzak sunucudan yerel makinenize nasıl dosya transfer edilir göstereceğiz. get komutunun temel sözdizimi ise:
get /uzak-dizin/dosya.txt
Örnek olarak /etc/xinetd.conf dosyasını uzak sunucudan (31.220.57.32) yerel makinenize kopyalamak için bu komutu kullanmalısınız:
get /etc/xinetd.conf
İndirme bittikten sonra bütün *.conf dosyalarını yerel makinenizin /kullanici/home dizininde bulabilirsiniz.
Birden çok dosya indirmek içinse mget komutunu kullanabilirsiniz. Örnek olarak /etc adlı bir dizindeki bütün .conf uzantısına sahip olan dosyaları indirmeyi göstereceğiz:
mget /etc/*.conf
İndirme bittikten sonra bütün *.conf dosyalarını makinenizdeki /kullanici/anadizin kısmında bulabilirsiniz.
SFTP Kullanarak Yerel Makineden Uzak Sunucuya Dosya Transferi
Yerel makineden uzak sunucuya dosya kopyalamak için get komutunu kullanın. get komutunun sözdizimiyse:
get dosya.txt /UzakDizin
İşte yerel makineden uzak sunucuya ornek.txt adlı dosyayı transfer etmek için örnek bir komut:
put /home/kullaniciadi/ornek.txt /root
İşte burada hedef makinenin (uzak sunucunun) kök dizininde bulabileceksiniz. Ayrıca mput komutunu kullanarak birden çok dosya transferi yapmayı deneyebilirsiniz. Bu komut neredeyse mget ile aynı şekilde çalışmaktadır:
mput/home/kullaniciadi/*.txt /root
Bu komut /home/kullaniciadi dizinindeki .txt uzantılı bütün dosyaları yerel makineden uzak makinenin /root dizinine taşır.
NOT: Unutmayın ki dosyaları indirmek ve karşıya yüklemek için put veya get komutunu girmeli TAB tuşuna basmalısınız.
SFTP ile uzak ve yerel sunucularda daha kolay gezinmek için bazı komutları kullanabilirsiniz. Bu komutlar Linux kabuk isteminde kullandıklarınıza oldukça benzerdir.
Örneğin pwd komutunu şu anda hangi dizinde çalıştığınızı öğrenmek için kullanabilirsiniz.
sftp> pwd Remote directory: /RemoteDirectory
veya
sftp> lpwd Local directory: /LocalDirectory
Ayrıca uzak dizin için kullandığınız dosyaların ve dizinlerin listesini de görüntüleyebilirsiniz:
ls
Aynı komutun yerel dizin için olanı:
lls
Sonuç buna benzer olacaktır:
Pictures Templates Media Text.txt Documents
Bir uzak dizinden diğer yerel çalışma dizinine geçmek için aşağıdaki komutları girin:
cd name_of_directory lcd name_of_directory
Son olarak ! ve exit komutlarını kullanarak yerel kabuğa geri dönün ve SFTP’den çıkın.
SFTP Kullanarak Temel Dosya Yönetimi
SFTP ile belirli komutları kullanarak dizinleri ve dosyaları da yönetebilirsiniz.
Uzak sunucunun disk alanını gigabyte birimiyle kontrol etmek için df fonksiyonunu kullanın:
df -h
İşte elde edeceğinizi sonucun bir örneği:
Filesystem Size Used Avail Use% Mounted on /dev/ploop29212p1 59G 2.5G 56G 5% / none 1.5G 0 1.5G 0% /sys/fs/cgroup none 1.5G 0 1.5G 0% /dev tmpfs 1.5G 0 1.5G 0% /dev/shm tmpfs 1.5G 568K 1.5G 1% /run tmpfs 308M 0 308M 0% /run/user/0
mkdir komutunu uzak veya yerel sunucuda yeni bir dizin oluşturmak için kullanın:
mkdir name_of_directory lmkdir name_of_directory
rmdir komutunu kullanarak uzak sunucudan bir dizin silebilirsiniz:
rmdir name_of_directory
Dosya adı değiştirmek de oldukça kolaydır:
rename filename new_filename
İşte bu komutun kullanımına dair bir örnek:
rename Old_FileExample New_FileExample
Eğer uzak sunucuda yüklü bir dosyayı silmek istiyorsanız rm komutunu kullanın:
rm filename
chown komutuysa dosya sahibini değiştirmek için kullanılır:
chown userid filename
userid bir kullanıcıadı veya rakamlardan oluşan kullanıcı ID‘si olabilir. Örneğin:
chown UserOne FileExample chown 1234 FileExample
chgrp ise bir dosya grubunun sahibini değiştirmek için kullanılır:
chgrp groupid filename
Örneğin:
chgrp NewGroup FileExample
Son olarak interaktif chmod komutunu kullanarak dosyanın iznini değiştirebilirsiniz:
chmod 764 FileExample
Bu örnekte üç haneli değer dosyanın kullanıcısı, grubu ve diğer kullanıcılara tekabül eder.
okuma (r), yazma (w), and çalıştırma (x) izinlerinin değerleriyse sırayla 4, 2, 1‘dir. İzin vermemek içinse 0‘ı kullanabilirsiniz.
İzin atamak içinse her kullanıcı sınıfı için toplam değerleri hesaplayın. İşte örneğin analizi:
chmod ugo FileExample # u represents the User who'll be able to read, write and execute the file. # g is for Groups, here we've given the permission to write and execute the file. # o or Others will only be able to read the file.
Kullanışlı SFTP Komutları Listesi
Eğer bir kopya listesine ihtiyacınız varsa işte mevcut bütün SFTP komutlarını içeren bir liste. Bu listeyi help veya ? komutunu girerek de kendiniz elde edebilirsiniz.
bye Quit sftp cd path Change remote directory to 'path' chgrp [-h] grp path Change group of file 'path' to 'grp' chmod [-h] mode path Change permissions of file 'path' to 'mode' chown [-h] own path Change owner of file 'path' to 'own' df [-hi] [path] Display statistics for current directory or filesystem containing 'path' exit Quit sftp get [-afpR] remote [local] Download file help Display this help text lcd path Change local directory to 'path' lls [ls-options [path]] Display local directory listing lmkdir path Create local directory ln [-s] oldpath newpath Link remote file (-s for symlink) lpwd Print local working directory ls [-1afhlnrSt] [path] Display remote directory listing lumask umask Set local umask to 'umask' mkdir path Create remote directory progress Toggle display of progress meter put [-afpR] local [remote] Upload file pwd Display remote working directory quit Quit sftp reget [-fpR] remote [local] Resume download file rename oldpath newpath Rename remote file reput [-fpR] local [remote] Resume upload file rm path Delete remote file rmdir path Remove remote directory symlink oldpath newpath Symlink remote file version Show SFTP version !command Execute 'command' in local shell ! Escape to local shell
SFTP Nedir?
SSH Dosya Transfer Protokolü veya kısaca SFTP, dosya transferi için çok güvenli bir yöntemdir. SSH protokolünü kullanarak dosya transferlerini daha iyi korumak için diğer güvenlik yöntemlerini ve şifrelemeyi destekler. Tercih edilen protokol olmasının sebebiyse dosya transferi işleminin her aşamasında saldırıya karşı koruma sağlayan tek güvenli dosya transfer protokolü olmasıdır.
Dosya transferi sürecinde bütün veriler paketlere ayrılır ve tek bir güvenlik bağlantı üzerinden yollanır.
Hassas mod şifrelenecektir ve istemciyle sunucu arasında taşınırken okunmaz olacaktır. Bir başka deyişle, orijinal içerik (düz metin) bir takım manasız karakter (şifreli metin) dizisiyle değiştirilecektir.
Orijinal içeriği sadece gerekli şifre çözme anahtarına sahip olan alıcı görebilecektir. Böylelikle dosya transferi sürecinde herhangi bir yetkisiz giriş engellenmiş olacaktır.
Normal dosya transfer protokolünde (FTP) ise veri alışverişi için iki kanal bulunmaktadır: komut kanalı ve veri kanalı. Buna karşılık olarak SFTP’de ise taşınan verinin şifrelendiği ve paketler halinde taşındığı şifreli kanal bulunmaktadır.
Sonuç
İşte bu kadar! SFTP’yi güvenli dosya transferi için nasıl kullanacağınıza dair bütün temel bilgileri edinmiş oldunuz. Umuyoruz ki rehberimiz size yardımcı olmuştur. Ancak FTP kousunda daha fazla bilgiye ihtiyacınızv varsa burada daha fazla rehber bulabilirsiniz.
Eğer herhangi bir sorunuz varsa aşağıdaki yorumlar kısmını kullanarak sorularınızı bize yöneltebilirsiniz!