19 Mart 2018 Pazartesi

SFTP ile Dosya Gönderme

      S.a. Arkadaşlar,
      Bugün C# ile stfp ile dosya göndermeyi işleyeceğiz. Daha önce Java'da yazmış olduğum bir blog yazım vardı konuyla ilgili, fakat şuan C# ile örnek yazacağız. Java ile yazdığımız ftp ile ilgiliyken  örneğimiz güvenli ftp manasındaki sftp olacak. Burada dahili kütüphane yeterli gelmiyor, bu nedenle nuget'ten ssh.net indirdik. Eğer siz de hazırsanız başlayabiliriz :)

     Biz kodumuzu SFTP ile yazacağımızı söylemiştik. Eğer ftp kullanacaksak ssh.net'e ihtiyaç duymuyoruz aslında. Bununla ilgili şuraya göz atabilirsiniz. Biz ise kaldığımız yerden devam edelim. Şurada belirtmemiz gereken bir nokta var ki , SFTP ile FTP Security birbirinize karıştırmamız gerekir. Aslında ilk duyulduğunda ikisi aynı şeyler gibi dursa da öyle değildir. Bununla ilgili şu ya da bu yazıya göz atabilirsiniz. Bu da Türkçe olarak okumak isteyenlere gelsin :)

    Konuyla ilgili gerekli açıklamaları yaptıktan sonra  şimdi kodumuzu verelim.
 //key'imizin olduğu dosyayı gösteriyoruz ve streame çeviriyoruz.Aşağıda örnek dosya vereceğiz.
 string key = File.ReadAllText("key dosyası");
 MemoryStream buf = new MemoryStream(Encoding.UTF8.GetBytes(key));
 PrivateKeyFile privateKeyFile = new PrivateKeyFile(buf);

 MemoryStream memoryStream = new MemoryStream(File.ReadAllBytes("yüklenecek dosya"));
 // ftp bilgilerimizi ve yukarıda gösterdiğimiz key dosyamızı tanıtıyoruz.
 var connectionInfo = new ConnectionInfo(ftpPath,ftpUser,
                        new PasswordAuthenticationMethod(ftpUser, ftpPassword),
                        new PrivateKeyAuthenticationMethod(ftpUser, privateKeyFile));
 using (var client = new SftpClient(connectionInfo))
 {
      // bağlantı kontrolü yapıyoruz. Eğer bağlantı kapalıysa açsın. Açıksa hata verecektir.
      if (!client.IsConnected)
      {
         //bağlantıyı yapıyoruz.
         client.Connect();
         //dosyayı yüklüyoruz
         client.UploadFile(memoryStream, "yüklenen dosyanın ismi");
         //eğer dosyamız yüklüyse başarılı sonucu dönsün
         if (client.Exists("dosyanın oluştuğu yer ve dosya ismi"))
         {
            //işlem başarılı
         }
      }
  }

    Kodumuz içerisinde gerekli açıklamaları yaptık. Anlaşılmayan veya sormak/eklemek istediğiniz şeyler olursa yorum kısmına yazabilirsiniz. Önce key dosyasını sonra da kaynakları verdikten sonra yazımıza son veriyoruz. Hoşça kalın.
---- BEGIN SSH2 ENCRYPTED PRIVATE KEY ----
Comment: "dsa-key-20170511"
P2/56wAAA4IAAAAmZGwtbW9kcHtzaWdue2RzYS1uaXN0LXNoYTF9LGRoe3BsYWlufX0AAA
AEbm9uZQAAA0QAAANAAAAAAAAACACOT7SBNaNYmT13gDCCFyE/3yEs6oVbmmGVM6dIesTC
iwY26oHL2JKNLh2gHYfwa9iwDESAH6CIUR+Jf19KXLyNMLQgsoEhfZRS35mDC0pyoYgD77
N2VXt7hkEYFYuJK459HmmoJ2DABdZ9Anb6twDwfY7XhRdLz2H44OOifd1qKjYd/qzsm9MQ
4qUDHYsJpfCly2DFjcFy915fPW4IrTguCRRv545B949iZD/9VcysVe5Cs5DKe1zQybgs2L
qRgMXVS8eHIx4ASNRP6Z9gllkPK2CqWMeLL7P0oR6fNuC8T02xy0CTNh9s041mB7zN5Sfy
kuTzqh6Wkj3t9Z9Fv8YxAAAH/iadRhuaJzO7c9oA4+Z/aPwcTQZQiyeZ0jzTzKUZsyOUiV
PDGxsAuBAcMapskELDdWy0n0S0im4HyxouQrQxqIHBtzucuD4YznIdsCCjs8S0NiBLXEE1
DYyiIpnAgpoC1j6b00L3LosaI2szOAp2fGB2dtXizX6fIkUZssNZthEbpOKGvItor7JUv8
urcbl56S9B+mdyTm/a+zKP+Q5rC9mjd/N6X+9+pZxPoSfEzgclUOLxC+zJigpUEZ9UcqGR
eCT881CKmd0HRrVG3uzgVvsnnzX7wyTnOqg2CXuESB3NvvlzM2Vsa3UuBU1AjBj1++0h5Q
VJ83MZmlp2seG0m3MAAACg22bQYT6jD8GG9XaeoHXwnaPCB8kAAAgAh5QuiehV7IZN9G0R
V4t/sdnhA8M5X7YXw9iQUu08TYmPomZATI/7OlUYySPsjuf5IbRWSKXVP1x2Rku8gJQnAI
lbS6jhxHjx61fwD4jctaCZdI1MzXgW/PtIv3Sc6JyJdnD1dqKieUuRG6PhTFqoG3F1YHyy
VydaIhB1vKi90sTJ5AXXEZG81Q7yRBItJqr46XBz0W4CqQS6aguzzO9ZEdcadJGfDF6Bp8
Ymxzf58lYNrCJem4p7axM7P/9HaNW4xzRb5N0hyBYjFXAFa/mo2jARWHQTGeQy7KbdfUKE
vkxd96qK3InQHijWelnKAT5KgFaM9P1AEsgLnNRlQdn/fwAAAJ4qvy/nqPvqBwotQLLE0I
M9rbFIdA==
---- END SSH2 ENCRYPTED PRIVATE KEY ----

https://stackoverflow.com/questions/43915130/does-ssh-net-accept-only-openssh-format-of-private-key-if-not-what-are-the-res
projenin github linki
https://stackoverflow.com/questions/25562434/sftp-in-c-sharp-using-a-webclient

Hiç yorum yok:

Yorum Gönder