.net - 无法使用VB.NET和SSH.NET连接到SSH/SFTP服务器-但是WinSCP和FileZilla可以连接

标签 .net vb.net ssh sftp ssh.net

多年来,以下代码一直有效。然后在4月11日停止。我在Visual Studio中注意到一条警告,指出SSH.NET软件包已过期,因此我更新了该软件包...仍然无法正常工作。

Protected Sub FTPUpload(ByVal fileToBeUploaded As String, uploadedFilename As String)
    Try
        Using sftp As New SftpClient(sFtpServer, sFtpCreditUser, sFtpCreditPW)
            sftp.Connect()
            Dim upFile As Stream = File.OpenRead(fileToBeUploaded)
            sftp.UploadFile(upFile, uploadedFilename)
            upFile.Close()
            sftp.Disconnect()
        End Using
    Catch ex As Exception
        MsgBox(ex.Message & Chr(13) & Chr(10) & uploadedFilename)
    End Try
End Sub 


抛出异常:

Renci.SshNet.Common.SshConnectionException in Renci.SshNet.dll
Renci.SshNet.Common.SshConnectionException: An established connection was aborted by the software in your host machine.
at Renci.SshNet.Session.WaitHandle(WaitHandle waitHandle)
at Renci.SshNet.Session.Connect()
at Renci.SshNet.BaseClient.Connect()
at InvManager.Main.FTPUpload(String fileToBeUploaded, String uploadedFilename) in C:\Data\vb.net\InvManager2.3\InvManager\Main.vb:line 562



已验证凭据在服务器端仍然有效。

FileZilla日志显示从运行主题VB代码的同一Windows框到服务器的SFTP连接:

Status: Connecting to server.com...  
Response: fzSftp started, protocol_version=8  
Command: open "user@server.com" 22  
Command: Pass: ******  
Status: Connected to server.com  
Status: Retrieving directory listing...  
Command: pwd  
Response: Current directory is: "/home/server"  
Command: ls  
Status: Listing directory /home/server  
Status: Directory listing of "/home/server" successful  
Status: Disconnected from server  

希望能获得一些帮助,以使其再次工作。

最佳答案

原始代码再也无法正常工作了...仍然不确定ssh.net发生了什么变化,从而破坏了代码。但是,对于每个@MartinPrikryl,我重新编写了使用WinSCP库而不是SSH.Net的代码,下面的代码使我们重新工作。

Protected Sub WinScpSFTPupload(ByVal fileToBeUploaded As String, uploadedFilename As String)
        Try
            Dim sessionOptions As New SessionOptions
            With sessionOptions
                .Protocol = Protocol.Sftp
                .HostName = sFtpServer
                .UserName = sFtpCreditUser
                .Password = sFtpCreditPW
                .GiveUpSecurityAndAcceptAnySshHostKey = True
            End With
            Using session As New Session
                session.Open(sessionOptions)
                session.PutFiles(fileToBeUploaded, uploadedFilename).Check()
            End Using
        Catch ex As Exception
            MsgBox(ex.Message & Chr(13) & Chr(10) & uploadedFilename)
        End Try
    End Sub ' Sub to WinSCP SFTP File

关于.net - 无法使用VB.NET和SSH.NET连接到SSH/SFTP服务器-但是WinSCP和FileZilla可以连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55735438/

相关文章:

.net - msbuild/clickonce 发布构建期间生成的文件

Git 在执行 Hook 时不识别存储库

c# - 在普通的旧 Dictionary<string,object> 上使用 MemoryCache 的令人信服的理由是什么

.net - 析构函数和垃圾收集器的区别

.net - 何时使用 AsyncOperation 和 AsyncOperationManager

java - Apache mina-sshd ssh 客户端总是打印 EdDSA provider not supported

ssh - 如何使用带有ssh -t标志的gcloud computing ssh?

vb.net - 不返回任何键列信息的 SelectCommand 不支持 UpdateCommand 的动态 SQL 生成

vb.net - 如何在标题栏上放置按钮?

vb.net - 如何将数据库中的图像添加到PictureBox?