2012-06-04 13 views
5

Próbuję przesłać pliki przez SFTP, używając SSH.NET. SFTPClient.Connect() wyrzuca wyjątek SshConnectionException z komunikatem "Bad packet length 1302334341". To jest mój kod:Jak rozwiązać błąd "Bad packet length" w SSH.NET?

static void Main() 
{ 
try 
{ 
SftpClient sftp = new SftpClient(server, 22, userID, password); 
sftp.Connect(); 
} 
catch(Exception e) 
{ 
Console.WriteLine(e.Message); 
} 
} 

widziałem w innym discussion, że prawdopodobnie ma do czynienia z szyfrowaniem. Używam AES i mam klucz hosta. Nie rozumiem jednak, jak wprowadzić szyfrowanie. Na podstawie tej dyskusji, grałem z tym:

ConnectionInfo connectionInfo = new PasswordConnectionInfo(server, 22, userID, password); 
connectionInfo.Encryptions.Clear(); 
connectionInfo.Encryptions.Add("aes","ssh-rsa 2048 11:22:34:d4:56:d6:78:90:01:22:6b:46:34:54:55:8a") 

wiem, że nie jest właściwy zestaw argumentów aby przejść do Encryptions.Add(), ale jestem trochę zagubiony przy użyciu tej biblioteki; czy możesz mi pomóc dowiedzieć się, jak poprawnie ustawić szyfrowanie (zakładając, że to jest problem)?

+3

rozwiązać w [dyskusji] (http://sshnet.codeplex.com/discussions/358307). Musiałem usunąć szyfrowanie za pomocą foreach (var d w connectionInfo.Encryptions.Where (p => p.Key! = "Aes128-cbc"). ToList()) { connectionInfo.Encryptions.Remove (d.Key) ; } ', zastępując w dowolnym szyfrowaniu, którego zamierzam użyć. – sigil

+0

Możesz umieścić swój komentarz jako odpowiedź - pomógł mi też! – andreister

Odpowiedz

0

Rozwiązany, w this discussion. I potrzebne do usunięcia szyfrowanie pomocą

foreach (var d in connectionInfo.Encryptions.Where(p => p.Key != "aes128-cbc").ToList()) 
{ 
connectionInfo.Encryptions.Remove(d.Key); 
} 

zastępując w zależności od tego szyfrowania I zamierza korzystać

Powiązane problemy