2012-06-04 32 views
5

Tôi đang cố tải tệp lên qua SFTP, sử dụng SSH.NET. SFTPClient.Connect() ném ra một ngoại lệ SshConnectionException với thông điệp, "Độ dài gói tin xấu 1302334341." Đây là mã của tôi:Làm cách nào để giải quyết lỗi 'Độ dài gói tin xấu' trong SSH.NET?

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

Tôi thấy trong một discussion rằng điều này có thể liên quan đến mã hóa. Tôi đang sử dụng AES và tôi có khóa chủ. Tôi không hiểu làm thế nào để nhập mã hóa, mặc dù. Dựa trên cuộc thảo luận đó, tôi đang chơi với điều này:

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") 

Tôi biết đó không phải là quyền thiết lập các đối số để truyền đến Encryptions.Add(), nhưng tôi là một chút mất với việc sử dụng thư viện này; bạn có thể giúp tôi tìm ra cách để thiết lập mã hóa đúng cách (giả sử đó là vấn đề)?

+3

Giải Quyết, trong [thảo luận này] (http://sshnet.codeplex.com/discussions/358307). Tôi cần phải loại bỏ encryptions bằng cách sử dụng 'foreach (var d trong connectionInfo.Encryptions.Where (p => p.Key! =" Aes128-cbc "). ToList()) { connectionInfo.Encryptions.Remove (d.Key) ; } ', thay thế bằng mã hóa nào tôi định sử dụng. – sigil

+0

Bạn có thể đặt nhận xét của mình làm câu trả lời - cũng giúp tôi! – andreister

Trả lời

0

Giải quyết, trong this discussion. Tôi cần thiết để loại bỏ mã hóa sử dụng

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

thay thế trong bất cứ mã hóa tôi có ý định sử dụng

Các vấn đề liên quan