2012-06-04 57 views
5

我试图通过SFTP上传文件,使用SSH.NETSFTPClient.Connect()用消息“Bad packet length 1302334341”抛出SshConnectionException。这是我的代码:如何解决SSH.NET中'错误的数据包长度'错误?

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

我在另一个discussion,这可能与加密该怎么办看到。我使用AES,而且我有一个主机密钥。不过,我不明白如何输入加密。在此基础上讨论,我玩这个:

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

我知道这不是正确的一组参数传递给Encryptions.Add(),但我有点用这个库丢失;你能帮我弄清楚如何正确设置加密(假设这是问题)?

+3

解决,在[这个讨论](http://sshnet.codeplex.com/discussions/358307)。我需要使用'foreach(var in connectionInfo.Encryptions.Where(p => p.Key!=“aes128-cbc”)去除加密)ToList()) { connectionInfo.Encryptions.Remove(d.Key) ; }',替换我打算使用的任何加密。 – sigil

+0

你可以把你的评论作为答案 - 也帮助我! – andreister

回答

0

解决,在this discussion。我需要使用

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

代中除去加密取其加密我打算使用