EgitimTube.Net
Would you like to react to this message? Create an account in a few clicks or log in to continue.

EgitimTube.Net


 
AnasayfaAramaLatest imagesKayıt OlGiriş yap

 

 windows icin sftp kurulum ve programlama

Aşağa gitmek 
YazarMesaj
Darq_phschopat
Admin
Admin



Zodyak Oğlak Mesaj Sayısı : 655
çin astrolojisi Yılan
Kayıt tarihi : 01/10/09
Yaş : 34
celebimutfak.com

windows icin sftp kurulum ve programlama Empty
MesajKonu: windows icin sftp kurulum ve programlama   windows icin sftp kurulum ve programlama Icon_minitimeCuma Şub. 12, 2010 10:43 am

Giriş



SFTP'nin açılımı, Secure File Transfer Protocol, yani Güvenli Dosya
Aktartım Protokolü'dür. Klasik FTP den farklı olarak iki bilgisayar
arasındaki dosya aktarımını SSH yöntemini kullanarak şifreli bir şekilde
gerçekleştirir ve 22 nolu portu kullanır.

Bu döküman, bir Windows işletiminde SFTP server kurulumu,
konfigirasyonu, güvenliği ve .Net programcıları için temel SFTP
işlemlerini kod bazlı nasıl yapabilecekleri konuları ele alınmaktadır.
Döküman, SFTP Server kurmak isteyen sistem yöneticileri ve SFTP ile
programsal işlemler yapmak isteyen programcılar için yazılmıştır.

Dökümanda bulunan kod örnekleri Visual Studio 2008 ortamında .Net
Framework 3.5 kullanılarak C# 3.0 ile başarılı bir şekilde test
edilmiştir.



1.Windows için SFTP Sunucu
Kurulumu


Unix tabanlı işletim sistemlerinde genellikle SSH kurulu olur. Ancak,
Windows sistemlerini SFTP server olarak kullanabilmek için sonradan
kurulum yapmamız gerekmektedir. Bunun için "Open SSH for Windows" isimli
özgür yazılımdan yararlanılabilir. [1]

OpenSSH, bir Windows Service olarak çalışır. SFTP işlemini
gerçekleştirecek kullanıcı hesapları için Windows'un yerel yada etki
alanı kullanıcılarına ihtiyaç duyar. Bunun anlamı, standart FTP Server
programlarında olduğu gibi bir FTP hesabı açmak yerine önce Windows'ta
bir kullanıcı hesabı oluşturulur ve bu hesap OpenSSH ile
ilişkilendirilir.

1.1.Open SSH Konfigirasyonu


OpenSSH'ın web sitesinden son versiyonu indirip kurun. [2]

Önemli : OpenSSH'ın doğru çalışabilmesi için kurulumdan sonra grup ve
parola dosyalarının oluşturulması gerekmektedir. Bunun için gerekli
komut dosyalarının varsayılan yolu : �c:\program files\openssh\bin�.

1. Önce bir grup dosyası oluşturulması gerekir. Bunun için;
Command Prompt�u açıp aşağıdaki komut çalıştırılır.
C:\program files\openssh\bin \mkgroup.exe -l >> ..\etc\group
Bu, İşletim sistemindeki kullanıcı gruplarıyla ilişkili bir dosya
oluşturur.



2. İkinci işlemimiz bir parola dosyası oluşturmak. Bunun içinde
aşağıdaki komutu çalıştırmalıyız.
C:\program files\openssh\bin \mkpasswd -l -u username >>
..\etc\passwd
Bu komutta username yerine SFTP Server için kullanacağımız bir yerel
kullanıcı hesabının adı yazılması gerekmektedir.



3. Windows Services�tan OpenSSH isimli Windows servisi
başlattığımızda Windows işletim sistemimiz bir SFTP hizmeti vermeye
hazır halde olacaktır.
1.2. İnce Ayarlar



Yukarıdaki yönergeleri uyguladığımızda Bir SFTP istemci programı ile
SFTP protokolünü kullanarak dosya alış verişi yapabiliriz. Ancak, SFTP
işleminde kullanılan hesap bir Windows yerel kullanıcı hesabı olduğu
için, varsayılan ayarlar ile oluşturulan bir kullanıcı hesabı önemli
güvenlik açıkları oluşturacaktır.

Bir Windows yerel kullanıcı hesabı oluşturduğunuzda , kullanıcının ait
olduğu varsayılan grup �User� grubudur, varsayılan dosya yolu ise
C:\Documents and Settings\username şeklindedir. SFTP istemci programı
ile bağlandığınızda da varsayılan dizin bu dizin olacaktır. Ve kullanıcı
User gurubuna dahil olduğundan dizinler ve hatta sürücüler arasında
gezebilecek, her işlemi gerçekleştirebilecektir.

Bunu önlemek için önce kullanıcıyı User gurubundan çıkarmalı, daha sonra
kullanıcının varsayılan dosya yolunun değiştirmeliyiz. Kullanıcı bir
dizine hapsetmek için ise NTFS dosya izinlerinden yararlanacağız.

Windows yerel kullanıcısı dizine hapsetmek için ise şu adımlar
uygulanmalırıdır.

1. Yerel kullanıcıyı User gurundan çıkarın : Bilgisayarım�a sağ
tıklayın, Yönet komutunu verin. Bilgisayar Yönetimi penceresinde
bulunan ağaç menüden Yerel kullanıcı ve gruplar�ı açık. Kullacılar�a
tıklayın. Yerel kullanıcının üzerine sağ tıklayın. Özelliklere girin.
Gruplar sekmesinden User gurubunu kaldırın ve Tamam tuşuna basın.

2. Yerel Windows kullanıcısının varsayılan dosya yolunu değiştirin
: Komut satırında aşağıdaki komutu çalıştırın.
C:\> net user username /HOMEDIR:\test4sftp

3. Kullanıcıyı dizine hapsedin :

a. Tüm sürücülerde uygulanmak üzere, sürücü�ye sağ tıklayın ve
özellikler�e girin. Güvenlik sekmesinde Grup yada kullanıcı adları
penceresine ilgili kullanıcıyı ekleyin. İzinler kısmında Tüm haklar için
Deny�i işaretleyin.

b. SFTP işlemleri için ayrılan dizine sağ tıklayın ve özellikler�e
girin. Güvenlik sekmesinde Grup yada kullanıcı adları penceresine ilgili
kullanıcıyı ekleyin. İzinler kısmında Tüm haklar için Allow�u
işaretleyin.

Dikkat : Bu işlemleri yaptıktan sonra, İnce Ayarlar isimli bölümdeki
bahsi geçen mkgroup ve mkpasswd komutları yeniden çalıştırılmalı ve
OpenSSH isimli Windows Service'i yeniden başlatılmalıdır.

Bir SFTP istemci programı ile SFTP hizmeti veren sunucumuza bağlanıp
testlerinizi gerçekleştirebilirsiniz. Bunun için FileZilla yada WinSCP
gibi özgür yazılımlar kullanabilirsiniz. 22 nolu portu kullanacağınızı
unutmayın !

2.Kod tabanlı SFTP istemci
işlemleri


Geliştirdiğiniz bir uygulamada SFTP işlemlerini yapmanız gerekiyorsa
piyasada bunu yapan ücretli bileşenler bulmanız mümkün. Ancak bunu özgür
yazılımlar yardımı ile de yapabilirsiniz. Doğal olarak ücretli
bileşenler kadar basit ve pratik olmasada en azından temel dosya aktarım
işlemlerini gerçekleştirebilirsiniz.

Bunun için PuTTY isimli bir özgür yazılım kullanacağız. PuTTY, Windows
için bir telnet ve SSH istemcisidir. [3] Bu yazılım SFTP işlemlerini
komut satırından verilen argümanlar ile gerçekleştirmektedir. Bu
dökümanda geliştirdiğimiz çözüm için PSCP ve PSFTP isimli iki exe
dosyasını kullanacağız. Bu dosyaları indirebileceğiniz adresleri
dökümanın sonunda bulunan bağlantılar kısmında bulabilirsiniz.

PSCP.exe : Dizin listeleme, dosya yükleme ve indirme işlemleri, [4]

PSFTP.exe : Dosya silme işlemi, [5]

için kullanıyor olacağız.

2.1.Komut Desenleri

Dizin Listeleme :
pscp.exe -l username -pw password -ls
[email][Linkleri görebilmek için üye olun veya giriş yapın.]:/[/email]

· Dosya indirme :
pscp.exe -l username -pw password
[email][Linkleri görebilmek için üye olun veya giriş yapın.]:/remoteFilePath[/email] localFilePath

· Dosya yükleme :
pscp.exe -l username -pw password localFilePath
[email][Linkleri görebilmek için üye olun veya giriş yapın.]:/remoteFilePath[/email]

· Dosya silme :
psftp.exe [Linkleri görebilmek için üye olun veya giriş yapın.]
-pw password -b batchfile.txt
bactfile.txt content : del remoteFilePath,


2.2.Örnek Kod Parçaları

2.2.1. Dizin Listeleme

Kod:
string username =
"testuser";

string password = "testpass";

string server = "127.0.0.1";



string commandFilePath = @"C:\pscp.exe";

string commandPatern = "-l {0} -pw {1} -ls {0}@{2}:/";

string commandLine = string.Format(

commandPatern,

username,

password,

server

);



Process process = new Process();

process.StartInfo.FileName = commandFilePath;

process.StartInfo.Arguments = commandLine;

process.StartInfo.RedirectStandardOutput = true;

process.StartInfo.UseShellExecute = false;

process.Start();

string standartOutput = process.StandardOutput.ReadToEnd();

process.Close();



string[] lines;

lines = standartOutput.Split(

Environment.NewLine.ToCharArray(),

StringSplitOptions.RemoveEmptyEntries

);

StringBuilder sb = new StringBuilder();

foreach(string line in lines)

{

if(line.Substring(0,1) == "-")

{

string remoteFileName = line.Substring(56);

sb.AppendFormat("{0}\r\n",remoteFileName);

}

}

MessageBox.Show(sb.ToString());



2.2.2.Dosya İndirme


Kod:
string username =
"testuser";

string password = "testpass";

string server = "127.0.0.1";

string remoteFilePath = "test.txt";

string localFilePath = @"C:\test.txt";





string commandFilePath = @"C:\pscp.exe";

string commandPatern = "-l {0} -pw {1} {0}@{2}:/{3} {4}";

string commandLine = string.Format(

commandPatern,

"testuser",

"testpass",

"127.0.0.1",

remoteFilePath,

localFilePath

);



Process process = new Process();

process.StartInfo.FileName = commandFilePath;

process.StartInfo.Arguments = commandLine;

process.StartInfo.RedirectStandardOutput = true;

process.StartInfo.UseShellExecute = false;

process.Start();

string standartOutput = process.StandardOutput.ReadToEnd();

process.Close();



if (standartOutput.Contains("100%") == true)

{

MessageBox.Show("Dosya başarıyla indirildi.");

}

else

{

MessageBox.Show("Dosya indirme işlemi başarısız.");

}



2.2.3. Dosya Yükleme

Kod:
string username =
"testuser";

string password = "testpass";

string server = "127.0.0.1";

string localFilePath = @"C:\test.txt";

string remoteFilePath = "test.txt";





string commandFilePath = @"C:\pscp.exe";

string commandPatern = "-l {0} -pw {1} {3} {0}@{2}:/{4}";

string commandLine = string.Format(

commandPatern,

"testuser",

"testpass",

"127.0.0.1",

localFilePath,

remoteFilePath

);



Process process = new Process();

process.StartInfo.FileName = commandFilePath;

process.StartInfo.Arguments = commandLine;

process.StartInfo.RedirectStandardOutput = true;

process.StartInfo.UseShellExecute = false;

process.Start();

string standartOutput = process.StandardOutput.ReadToEnd();

process.Close();



if (standartOutput.Contains("100%") == true)

{

MessageBox.Show("Dosya başarıyla yüklendi.");

}

else

{

MessageBox.Show("Dosya yükleme işlemi başarısız.");

}



2.2.4.Dosya Silme

Kod:
string username =
"testuser";

string password = "testpass";

string server = "127.0.0.1";

string localFilePath = @"C:\test.txt";

string remoteFilePath = "test.txt";



string tempFileName = string.Format("temp_{0}", remoteFilePath);

string tempDirectory = @"C:\temp";

string tempFilePath = Path.Combine(tempDirectory, tempFileName);

FileStream fs = new FileStream(tempFilePath, FileMode.Create);

System.IO.StreamWriter sw = new StreamWriter(fs);

sw.WriteLine(string.Format("del {0}", remoteFilePath));

sw.Close();

sw.Dispose();

fs.Close();

fs.Dispose();





string commandFilePath = @"C:\psftp.exe";

string commandPatern = "{0}@{1} -pw {2} -b {3}";

string commandLine = string.Format(

commandPatern,

username,

server,

password,

tempFilePath

);



Process process = new Process();

process.StartInfo.FileName = commandFilePath;

process.StartInfo.Arguments = commandLine;

process.StartInfo.RedirectStandardOutput = true;

process.StartInfo.UseShellExecute = false;

process.Start();

string standartOutput = process.StandardOutput.ReadToEnd();

process.Close();



if (standartOutput.Contains(": OK") == true)

{

MessageBox.Show("Dosya başarıyla silindi.");

}

else

{

MessageBox.Show("Dosya silme işlemi başarısız.");

}



System.IO.File.Delete(tempFilePath);

undefined undefined


Dikkat :Şimdiye kadar
kullanılan komutlarda l parametresi yerel kullanıcılar için
kullanılmıştır. Domain kullanıcıları için d parametresi kullanılması
gerekmektedir.

Referanslar
[1] [Linkleri görebilmek için üye olun veya giriş yapın.]

[2] [Linkleri görebilmek için üye olun veya giriş yapın.]

[3] [Linkleri görebilmek için üye olun veya giriş yapın.]

[3] [Linkleri görebilmek için üye olun veya giriş yapın.]

[4] [Linkleri görebilmek için üye olun veya giriş yapın.]

Kaynaklar
PuTTY User Manual
(http://www.interix.com/downloads/Configuring_OpenSSH.pdf)

Configuring OpenSSH for passwordless login on the Interix subsystem
[Linkleri görebilmek için üye olun veya giriş yapın.]

Setting up a SFTP Server on Windows
[Linkleri görebilmek için üye olun veya giriş yapın.]



Alıntıdır Arkadaşlar...Emeğe
saygısızlık olmasın.
[/b]
Sayfa başına dön Aşağa gitmek
http://forum.egitimtube.net
 
windows icin sftp kurulum ve programlama
Sayfa başına dön 
1 sayfadaki 1 sayfası
 Similar topics
-
» Windows 7 için Windows Vista Sticky Notes Aracı
» Windows XP için Windows 7 Ctrl+Alt+Del Ekranı
» Windows XP için Windows 7 Dönüşüm Paketi
» Windows XP için Windows 7 Görünüm Paketi
» Windows 7 için Bing Teması

Bu forumun müsaadesi var:Bu forumdaki mesajlara cevap veremezsiniz
EgitimTube.Net :: BiLgisayar ve Teknoloji :: İşletim Sistemleri :: Diğer İsLetim SistemLeri-
Buraya geçin: