【问题标题】:ssh.net sftp Bad Packet length / open SSH version 2 RSA?ssh.net sftp Bad Packet length / open SSH version 2 RSA?
【发布时间】:2013-03-11 19:48:18
【问题描述】:

我是 sftp 的新手,我正在尝试让一个 c# 程序通过 sftp 将文件发送到不受我控制的远程服务器。

使用如下代码:

using (var sftp = new SftpClient(FTPAddress, FTPName, FTPPassword))
                    {
                        ConnectionInfo myCI = sftp.ConnectionInfo;

                        sftp.Connect(); // <<<< Exception on connect

                        sftp.UploadFile(sftp_ms, FileName,true);

                        sftp.Disconnect();
                    }

我收到“错误的数据包长度”异常。

Google 搜索显示错误的数据包长度可能是加密格式不匹配,但我不知道如何解决。

我从客户那里收到的规格是:

Keys must be in Open SSH version 2 format RSA format

我不知道该怎么做。之前的 SO 问题 How to resolve a 'Bad packet length' error in SSH.NET? 有一个指向 sshnet.codeplex 讨论的链接,其中删除您不想要的加密密钥可以解决该海报的问题。

我可以在 ssh.net 的 connectioninfo 类中看到 16 个条目,但它们都没有声明打开 SSH 版本 2 RSA,尽管其中一个很可能是(我已经尝试过谷歌搜索)。

我已尝试使用 filezilla 提供的 IP、名称和密码,并且连接没有问题;所以filezilla以某种方式使用了正确的加密;我不知道如何判断它在使用什么。

帮助?

安德鲁

【问题讨论】:

  • FTPPassword 的类型是什么?它可能为ctor使用了错误的重载。另外,您确定远程服务器接受用户名/密码验证而不是公钥验证吗?
  • 所有字符串;但如果这是过载的问题,它会在构造上出错,而​​不是连接上?至于远程服务器,当我将IP、用户名和密码放入filezilla时,它会成功连接,然后我也可以传输文件了。

标签: c# ssh sftp


【解决方案1】:

这里有两个不同的问题。如果您遇到错误的数据包长度问题,那么您可能必须按照ssh.net Codeplex 讨论中的指南来解决协商问题。这应该解决初始连接的建立。

如果您需要使用 ssh 私钥进行连接,则必须使用其中一个构造函数,该构造函数采用 PrivateKey 对象数组。 PrivateKey 的构造函数之一采用流,您可以使用以下代码将私钥字符串转换为流:

var privKey = new PrivateKey(new MemoryStream(Encoding.ASCII.getBytes(sshPrivateKeyString)));
var sftpclient = new SftpClient(FTPAddress, FTPName, new PrivateKeyFile[] { privKey });

其他机制是使用显式 PrivateKeyConnectionInfo 实例:

var privKey = new PrivateKey(new MemoryStream(Encoding.ASCII.getBytes(sshPrivateKeyString)));
var privConnInfo = new PrivateKeyConnectionInfo(FTPAddress, FTPName, privKey);
var sftpClient = new SftpClient(privConnInfo);

【讨论】:

  • 迟到了抱歉;未来搜索者的更多信息:据我了解,如果您使用带有用户名/密码的 sftp,则不需要公钥/私钥,因为身份验证是通过用户/密码进行的;在没有用户/密码登录的情况下需要公共/私人。我错误地试图同时做这两件事
猜你喜欢
  • 2012-10-02
  • 2021-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-03
  • 2023-04-01
  • 2014-05-20
  • 1970-01-01
相关资源
最近更新 更多