c# – SSH.NET – 消息类型80无效
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – SSH.NET – 消息类型80无效,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1253字,纯文字阅读大概需要2分钟。
内容图文
我有以下代码尝试连接到使用OpenSSH构建的SFTP服务器(服务器正常工作,因为我已经能够通过WinSCP客户端成功连接到此FTP):
ConnectionInfo ConnNfo = new ConnectionInfo("127.0.0.1", 22, "usertest",
new AuthenticationMethod[]{
// Pasword based Authentication
new PasswordAuthenticationMethod("usertest","usertest"),
}
);
// Upload A File
using (var sftp = new SftpClient(ConnNfo))
{
sftp.Connect();
sftp.ChangeDirectory(@"/C:/IISFTP/");
using (var uplfileStream = File.OpenRead(uploadfn))
{
sftp.UploadFile(uplfileStream, uploadfn, true);
}
sftp.Disconnect();
}
调用sftp.Connect()行时,会引发以下异常:
Message type 80 is not valid
为什么会这样?如何使用SSH.NET连接到我的SFTP服务器?
谢谢
解决方法:
消息80代表SSH_MSG_GLOBAL_REQUEST.
现代版本的OpenSSH服务器将此通用消息用于各种proprietary extensions of the SSH protocol.
大多数客户端/应该默默地忽略无法识别的消息. SSH.NET也会忽略SSH_MSG_GLOBAL_REQUEST,但在身份验证完成之前它不会期望消息.
不幸的是,OpenSSH似乎甚至在认证之前发送了其中一些(可能是hostkeys-prove-00@openssh.com).
该问题已于SSH.NET 2016.0.0-beta1修复.见Issue #8和Commit a1f46d4.
在旧版本中,转到Session.cs并在Session.Connect()方法中将以下行稍微向上移动,在验证码上方:
RegisterMessage("SSH_MSG_GLOBAL_REQUEST");
我把它放在这条线下面:
RegisterMessage("SSH_MSG_USERAUTH_BANNER");
内容总结
以上是互联网集市为您收集整理的c# – SSH.NET – 消息类型80无效全部内容,希望文章能够帮你解决c# – SSH.NET – 消息类型80无效所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。