Ana içeriğe atla

SSH, SFTP, SCP Nedir? (VB.NET ile Örnekler)

SSH Nedir ?
SSH(Secure Shell/Güvenli Kabuk) ağ üzerinden başka bilgisayarlara erişim sağlamak, uzak bir bilgisayarda komutlar çalıştırmak ve bir bilgisayardan diğerine dosya transferi amaçlı geliştirilmiş bir protokoldür. Güvensiz kanallar(internet vs) üzerinden güvenli haberleşme olanağı sağlar. Bir iletişimde SSH aşağıda belirtilen temel unsurları sağlar;
• authentication /Kimlik denetimi
• encryption /Şifreleme
• Integrity /Bütünlük.

SSH ile Dosya Transferi
Günümüzde kullanılan en popüler dosya transfer aracı FTP’dir. SSH kullanarak hem ftp kolaylığında dosya transferi yapılabilir; hem de transfer edilen dosya şifrelenerek meraklı gözlerden korunmuş olur. SSH ile dosya transferinde temel iki seçenek var; biri SCP(secure Copy) diğeri de Sftp(Secure FTP). Temel bazı farklılıklar dışında her iki yöntem ile yapılabilecekler aynıdır.
SSH ve türevlerinin, SCP ve SFTP'nin anlamı uzak sistem erişimidir. SSH, RSH'nin güvenli sürümü, SCP ve SFTP de sırasıyla RCP ve FTP'nin güvenli sürümleridir. Neden güvenli? ssh ve türevleri, daha güçlü doğrulama düzenekleri sağlar ve tüm trafiği, birkaç şifre arasından seçtiğiniz yöntemle şifreler. Birisi ağınıza sızsa bile, ssh trafiği oldukça anlaşılmaz görünecektir.


SFTP Kullanımı
SFTP, diğer dosya transfer programları gibi FTP (File Transfer Protocol - Dosya Aktarım Protokolü)'yi kullanarak sistemler arasında dosya transferi yapabilmenizi sağlar. SFTP'yi diğer dosya aktarım programlarından ayıran yönü ise sistemler arası bağlantı kurarken SSH'i kullanmasıdır. 22 nolu portu kullanır. Bu sayede bir taşla iki kuş vurup, hem bağlantı güvenliğini en üst düzeye çekmiş oluyoruz hem de SFTP bağlantımız aracılığıyla bazı SSH özelliklerini de kullanabiliyoruz.
Peki SFTP'yi kullanmamız için neye ihtiyacımız var? Eğer bir Linux dağıtımı kullanıyorsak hiçbir derdimiz yok çünkü SFTP neredeyse bütün Linux dağıtımlarında standart olarak bulunuyor. Ama eğer işletim sistemimiz Windows ise bir SFTP istemcisi kurmamız şart. Bunun için de en uygun seçenek açık kaynak kodlu bir uygulama olan WinSCP.
Visual studio.net te yazılım yapıyorsanız hangi bileşen kullanılmalıdır? İnternette SFTP için bir çok bileşen mevcut. Örneğin : Chilkat, IPWorks, SFTPBlackbox, NetXtremeNetworkPro Suite...
Chilkat bileşeni ile SFTP’ye nasıl bağlanılır, dosya transferi nasıl yapılır birazda bunlardan örneklerle bahsedelim.

SFTP Bağlantı :
Dim sftp As New Chilkat.SFtp()
'Chilkat’ın lisanslı versiyonunu kullanıyorsanız UnLockComponent methoduna lisans anahtarı ‘girilmelidir. 30 günlük deneme versiyonunu kullanmak için “Anything for 30-day trial” ‘yazmanız yeterli
Dim success As Boolean
success = sftp.UnlockComponent("Anything for 30-day trial")
If (success <> true) Then
   MsgBox(sftp.LastErrorText)
   Exit Sub
End If

' timeouts, in milliseconds değerleri girilmelidir:
sftp.ConnectTimeoutMs = 5000
sftp.IdleTimeoutMs = 10000

' SSH sunucuya bağlanma
' Standart SSH port = 22
' hostname parametresine hastname veya IP girilebilir.

Dim port As Long
Dim hostname As String
hostname = "www.xxx.com"
port = 22
success = sftp.Connect(hostname,port)
If (success <> true) Then
   MsgBox(sftp.LastErrorText)
   Exit Sub
End If

' Kullanıcı adı ve şifre ile SSH sunucusunda kimlik doğrulaması yapılmalır.
success = sftp.AuthenticatePw("myLogin","myPassword")
If (success <> true) Then
   MsgBox(sftp.LastErrorText)
   Exit Sub
End If

' Kimlik doğrulama işleminden sonra SFTP sistemi başlatılmalıdır.
success = sftp.InitializeSftp()
If (success <> true) Then
   MsgBox(sftp.LastErrorText)
   Exit Sub
End If


SFTP Dosya Gönderimi :
' SSH sunucusuna yazmak için yazılacak dosya açılır.
' Eğer dosya var ise üserine yazılır
Dim handle As String
handle = sftp.OpenFile("x.xml","writeOnly","openOrCreate")
If (handle = vbNullString )
Then
   MsgBox(sftp.LastErrorText)
   Exit Sub
End If


' yerel dizinden SSH server’ına dosya transferi
success = sftp.UploadFile(handle,"c:/x.xml")
If (success <> true) Then
   MsgBox(sftp.LastErrorText)
   Exit Sub
End If

' Dosya kapatılır.
success = sftp.CloseHandle(handle)
If (success <> true)
Then
   MsgBox(sftp.LastErrorText)
   Exit Sub
End If


SFTP Dosya indirme :
'serverda dosya açılır.
Dim handle
As String
handle = sftp.OpenFile("x.xml","readOnly","openExisting")
If (handle = vbNullString )
Then
   MsgBox(sftp.LastErrorText)
   Exit Sub
End If


' Download the file:
success = sftp.DownloadFile(handle,"c:/x.xml")
If (success <> true) Then
   MsgBox(sftp.LastErrorText)
   Exit Sub
End If


' Dosya kapatılır.
success = sftp.CloseHandle(handle)
If (success <> true) Then
   MsgBox(sftp.LastErrorText)
   Exit Sub
End If


SFTP Dosya Silme:
success = sftp.RemoveFile("x.xml")
If (success <> true) Then
   MsgBox(sftp.LastErrorText)
   Exit Sub
End If


SFTP Dizin yaratma :
success = sftp.CreateDir("YeniDizin")
If (success <> true) Then
   MsgBox(sftp.LastErrorText)
   Exit Sub
End If


SFTP Dizin veya Dosya ismi değiştirme :
success = sftp.RenameFileOrDir("eskidosyaadi.txt","yenidosyaadi.txt")
If (success <> true) Then
   MsgBox(sftp.LastErrorText)
   Exit Sub
End If


SCP Kullanımı
SCP (Secure Copy - Güvenli Kopyalama), bir ağdaki iki bilgisayar arasında dosya kopyalamanızı sağlar. Bağlantı sırasında SSH kullandığı için dosya aktarımı şifreli ve güvenlidir. SCP'yi kullanabilmeniz için SSH Client (SSH istemcisi) bilgisayarınızda kurulu olmalıdır. Yine Linux sistemlerinin hemen hemen hepsinde bu standart olarak gelmektedir.
SCP'nin kullanımı gayet basit ve kısadır. Siz komutu verdikten sonra bağlantısını kurar, dosyasını kopyalar ve bağlantısını kapatır. Kullanım mantığı temel olarak "cp" komutunun kullanımıyla aynıdır.

Referanslar


Neslihan ÇALIŞKANEL

Yorumlar

Bu blogdaki popüler yayınlar

UML ve Modelleme – Bölüm 3 (Use Case Diyagramlar)

Önceki iki makalemizde (1, 2) UML’e genel olarak değinip ve modellemede kullanacağımız dokuz diyagram hakkında bilgiler vermiştik. Bu makalemizde Use Case diyagramından detaylı bahsedeceğiz. Öncelikle, genel Use case diyagramının tanımını hatırlayalım. “Bir kullanıcı ve bir sistem arasındaki etkileşimi anlatan senaryo topluluğudur.” Ivar Jacobson Senaryo tanımı için der ki:
“Aktörle sistem arasında gerçekleştirilen, sonucunda aktöre farkedilir getirisi/ faydası oluşan etkileşimli diyalogdur. ” UML Use Case Diyagramları  sistemin işlevselliğini açıklamak amacıyla kullanılır. Sistemin birbirinden ayrı özelliklerinin detaylarını göstermekten ziyade, Use Case Diyagramlar, tüm mevcut işlevselliği göstermek için kullanılabilir. Buradaki en önemli noktalardan biri,   Use Case Diyagramlar temelde sequence diyagram ve akış diyagramlarından farklıdır. Use Case diyagramlar dört ana elemandan oluşmaktadır. Aktörler, Sistem (Proje kapsamını belirtir), Use Caseler ve bunlar arasındaki ilişkiler. Şekil…

UML ve Modelleme – Bölüm 4 (Class (Sınıf) Diyagramları)

Bir önceki makalemizde UML modellemede kullanılan ilk diyagram olan Use Case diyagramını incelemiştik. Bu makalemizde nesne tabanlı programlamada kullanılan sınıflar ve sınıfların arasındaki ilişkileri modelleyebileceğimiz diyagramlar olan Class(Sınıf) diyagramlarını inceleyeceğiz. UML’de sınıflar, nesne tabanlı programlama mantığı ile tasarlanmıştır. Sınıf diyagramının amacı bir model içerisinde sınıfların tasvir edilmesidir. Nesne tabanlı uygulamada, sınıfların kendi özellikleri (üye değişkenler), işlevleri (üye fonksiyonlar) ve diğer sınıflarla ilişkileri bulunmaktadır. UML’de sınıf diyagramlarının genel gösterimi aşağıdaki gibidir. Şekil 1. Class Diyagram Şekil1’de görüldüğü üzere bir dikdörtgeni 3 parçaya bölüyoruz. En üst bölüm sınıf adını, orta kısım özellik listesini (üye değişkenler) ve en son kısım, işlev listesini (üye fonksiyonlar) göstermektedir. Çoğu diyagramlarda alt iki bölüm çıkarılır. Genelde tüm özellik ve işlevler gösterilmemektedir. Amaç, diyagramın sadece belirli k…

Cluster ve clustering nedir? Cluster oluşturmanın faydaları nelerdir? (Bölüm I)

Cluster, basit anlamda benzer bir amaç için belirli bir konfigürasyon yapılarak aynı görevi birlikte ya da yedekli çalışmasını sağlayan servistir. Cluster farklı amaçlarla oluşturulabilir fakat son kullanıcı tarafından her zaman tek bir bilgisayar gibi gözükecektir. Bir cluster oluşturmak için en azından iki adet sunucuya ihtiyaç vardır ve bir cluster içindeki her bir sunucu “node” olarak adlandırılır. İhtiyaç olan hizmete göre çeşitli sayıda nodelar bir araya gelerek clusterları oluşturmaktadır. Bir cluster oluşturmak için gerekli sebepler daha fazla performans ihtiyacı, yüksek erişilebilirlik (high availability) ya da her ikisi birlikte olabilir. Şimdi cluster çeşitlerini çok fazla ayrıntıya girmeden biraz daha yakından inceleyelim. Yüksek erişilebilirlik (High-availability) clusterlarıBu tip cluster yapısında öncelik erişilebilirliği arttırmadır. Bunu tek bir sunucunun görevini herhangi bir donanım yada yazılım problemi oluştuğunda diğer bir sunucunun otomatik olarak devralması olara…