2009-12-10 6 views
5

FTP를 사용하여 지정된 대상으로 파일을 자동 전송하는 서비스를 작성했습니다. 역사적인 이유로 나는 FTPing을 수행하기 위해 WinInet을 사용하고 있습니다. 모든 것이 잘 작동하지만 이제 고객은 SFTP 연결 만 허용하는 대상을 하나 추가하려고합니다.SFTP 서버와 통신하는 방법

처음부터 이것을 구현하는 아이디어가 마음에 들지 않으므로 기본적으로 또는 WinInet을 통해 SFTP 서버와 통신하는 방법이 있습니까? 사용할 수있는 시스템 라이브러리가 있습니까 (P/Invoke에 대한 두려움이 없습니다 :))? 타사 구성 요소를 구입해야합니까? 그렇다면 어떤 구성 요소를 제안합니까?

+0

SFTP의 변형 :

에서보세요? – SLaks

+0

음, 단지 SFTP가 하나뿐입니다. 다른 하나는 FTPS라고합니다. –

+0

오, 알겠습니다. 죄송합니다. 간단한 FTP가 아닌 안전한 FTP. –

답변

2

이기 때문에 지금 https://github.com/sshnet/SSH.NET 같은 것을 권 해드립니다 ... 명확성을 위해

편집 쉬웠다하지만 WinSCP에 대한 스크립트를 작성 결국, SFTP는 기본적으로 지원되지 않습니다 WinInet 또는 기타 표준 Windows 라이브러리.

다양한 SFTP 서버와 통신 할 때/n Software의 IP*Works SSH for .NET과 함께 행운을 빕니다.

+0

비용은 $ 1000입니다. – max

0

http://sourceforge.net/projects/sharpssh/이 최선의 방법입니다. 내가하는이 SharpSSH 죽은 프로젝트 불행하게도

+1

http://www.enterprisedt.com/products/edtftpnetpro/overview.html에 대한 좋은 소식도 들었지만 실제로 사용하지는 않았습니다. – davewasthere

+0

나는 그것을 사용하고 그것을 사랑했습니다. 주저없이 그것을 권하고 싶습니다. – Walter

+0

@ Walter 님의 주장에 대한 Seconding. 이것은 훌륭한 도서관입니다. – mrduclaw

-1

어느 일부 SFTP 실행 파일을 설치하고 명령 줄에서 수동으로 할 것이 많은처럼 operaton을 수행 할 C# 프로그램에서 호출, 또는 같은 SharpSSH

+0

음, 고객은 가장 정확한 로깅을 필요로하므로 일부 도구를 호출하는 것이 바람직하지 않습니다. 그러나, 나는 SharpSSH를 시도 할 것이다. –

+0

SharpSSH는 죽은 프로젝트입니다. –

0

는 .NET Framwork 버전 2.0 이후에서는 FtpWebRequest를 통해 FTP를 지원 작동합니다. 아직 SFTP를 지원하지 않습니다.

FTP와 SFTP가 모두 필요한 경우 타사 구성 요소를 사용해보십시오. 자주 권장되는 Tamir Gal의 open source implementation of SFTP이 있습니다. 또는 Rebex SFTP과 같은 상용 SFTP 구성 요소 중 하나를 사용해 볼 수도 있습니다.

다음 코드는 Rebex SFTP tutorial page에서 가져온 것입니다 :

// create client, connect and log in 
Sftp client = new Sftp(); 
client.Connect(hostname); 
client.Login(username, password); 

// upload the content of 'c:\data' directory and all subdirectories 
// to the '/wwwroot' directory at the server 
client.PutFiles(@"c:\data\*", "/wwwroot", SftpBatchTransferOptions.Recursive); 

client.Disconnect(); 

당신이 FTPS를 필요로하거나 당신이 모두 포함 된 Rebex File Transfer Pack을 확인할 수 있습니다 SFTP할지 확실하지 않은 경우. FTP API는 SFTP와 거의 동일합니다.

0

JFYI : .NET에서 SFTP를위한 아마도 가장 풍부한 기능의 구성 요소는 우리의 SFTPBlackbox입니다.

3

은 모든 버전에서, .NET 프레임 워크에서 SFTP에 대한 지원이 없습니다.


SFTP에는 타사 라이브러리를 사용해야합니다.

당신은 WinSCP .NET assembly를 사용할 수 있습니다. WinSCP NuGet package도 있습니다.

일반의 SFTP 업로드 C# 예제 :

// Setup session options 
SessionOptions sessionOptions = new SessionOptions 
{ 
    Protocol = Protocol.Sftp, 
    HostName = "example.com", 
    UserName = "user", 
    Password = "mypassword", 
    SshHostKeyFingerprint = "ssh-rsa 2048 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx" 
}; 

using (Session session = new Session()) 
{ 
    // Connect 
    session.Open(sessionOptions); 

    // Upload files 
    session.PutFiles(@"d:\toupload\*", "/home/user/").Check(); 
} 

lot of other examples을있다.


당신은 C#을, VB.NET 및 PowerShell을 포함, 당신을 위해, 위와 같이, WinSCP GUI generate an SFTP code template을 가질 수 있습니다.

enter image description here


조립은 WinSCP에 스크립트 래퍼, 그래서 완전히 네이티브 .NET 코드 아니다. 따라서 .NET Framework의 모든 사용 사례에 맞지 않습니다. GUI 나 웹 어플리케이션을 개발하는 것이 아니라 자동화 작업에 가장 적합합니다. 완전히 네이티브 .NET SFTP 라이브러리에 대한

, 이상하게도 아직 대답에 언급되지 않은 SSH.NET를 참조하십시오.

(나는 WinSCP에의 저자 해요)

0

나는 WinSCP에를 사용하여 SFTP 서버와 상호 작용의 데모를 만들었습니다.

이 응용 프로그램은, 업로드, 삭제, 이름 변경 및 WinSCP에 .NET 어셈블리를 사용하여 SFTP 서버에있는 파일 시스템의 정보를 가져올 수 있습니다. https://github.com/ducfilan/SFTP-with-WinSCP

관련 문제