파일을 FTP 서버에 업로드하기 위해 콘솔 응용 프로그램을 만들었습니다. 이 FTP 서버는 SFTP 프로토콜 만 받아들이므로 .NET에 메서드가 내장되어 있지 않아 SSH.NET 오픈 소스 라이브러리를 사용하고 있습니다 (Visual Studio 2008 Professional에서 사용하는 .NET 3.5는 적습니다).SSH.NET을 사용하여 SFTP로 파일 업로드 : 연결할 수 없습니다.
나는 많은 예제를 보았습니다. 공용 SFTP 서버에 연결하고 SFTP 프로토콜을 사용하여 파일을 업로드하는 빠른 테스트 응용 프로그램을 구현했습니다. 나는 공공 무료 SFTP의 here에서 얻은 서버 아래에 사용하고
:
연결하려고 할 때 :
const string host = "demo.wftpserver.com";
const string username = "demo-user";
const string password = "demo-user";
const string workingdirectory = "/upload";
const string uploadfile = @"C:\test.txt";
const int port = 2222;
static void Main(string[] args)
{
try
{
using (SftpClient client = new SftpClient(host, port, username, password))
{
{
client.Connect();
Console.WriteLine("Connected to {0}", host);
client.ChangeDirectory(workingdirectory);
Console.WriteLine("Changed directory to {0}", workingdirectory);
var listDirectory = client.ListDirectory(workingdirectory, null);
Console.WriteLine("Listing directory:");
foreach (var fi in listDirectory)
{
Console.WriteLine(" - " + fi.Name);
}
using (var fileStream = new FileStream(uploadfile, FileMode.Open))
{
Console.WriteLine("Uploading {0} ({1:N0} bytes)", uploadfile, fileStream.Length);
client.BufferSize = 4 * 1024; // bypass Payload error large files
client.UploadFile(fileStream, Path.GetFileName(uploadfile), null);
}
}
}
}
catch (Exception e)
{
Console.Out.WriteLine(e.Message);
}
문제는 다음과 같다 : 여기
server : demo.wftpserver.com
user : demo-user
password : demo-user
port : 2222
그리고 코드입니다 서버는 아래 문장을 사용합니다 :
client.Connect();
예외가 있습니다. 예외는 다음과 말했다 :
"Value cannot be null. \r\nParameter name: All lists are either null or empty."
StackTrace " at Renci.SshNet.Session.WaitOnHandle(WaitHandle waitHandle, TimeSpan timeout)\r\n at Renci.SshNet.Session.WaitOnHandle(WaitHandle waitHandle)\r\n at Renci.SshNet.Session.Connect()\r\n at Renci.SshNet.BaseClient.Connect()\r\n at ConsoleApplication2.Program.Main(String[] args) at C:\\Users\\Win7\\Downloads\\ConsoleApplication2\\ConsoleApplication2\\Program.cs:line 61" string
은 또한, 나는 here하지만 성공하지 설명으로 시간 제한을 변경하는 것을 시도했다.
그러나 FileZilla 클라이언트에서 동일한 자격 증명을 사용하여 동일한 SFTP 서버에 연결하려고하면 문제없이 연결할 수 있으며 파일을 업로드 할 수도 있습니다.
그래서 무슨 일이 일어나고 있는지 이해할 수 없습니다. 누군가 나를 도울 수 있습니까?
업데이트 : 이 항목을 찾았습니다. fix. 이 패치는 2017 년 1 월 22 일에 brank 개발에 적용되었지만 다운로드 할 수있는 마지막 바이너리는 2016 년 12 월 14 일입니다. 따라서이 수정 사항을 포함하는 바이너리를 어떻게 구할 수 있습니까?
SharpSSH는 (는) 죽은 프로젝트입니다. 사용하지 마십시오. 웹 사이트도 다운 된 상태입니다. –
죽지 않았어. 우리는 현재이 프로젝트에서 사용하고 있습니다. –
마지막 버전은 2011 년이고 웹 페이지는 2007 년부터 업데이트되지 않았습니다. 그게 내가 보안 관련 라이브러리에 대해 죽은 것입니다. 현대 암호는 지원할 수 없습니다. –