标签: winscp-net

使用C#中的WinSCP连接到SFTP时"没有可用的支持的身份验证方法"

我正在尝试使用C#中的WinSCP连接到SFTP服务器.这是我的代码:

SessionOptions sessionOptions = new SessionOptions
{
    Protocol = Protocol.Sftp,
    HostName = "ip",
    PortNumber = portNR,
    UserName = "username",
    Password = "",
    SshHostKeyFingerprint = "fingerPrint", 
    SshPrivateKeyPath = "\\PrivateKey\\PrivateKey.ppk ",
};

using (Session session = new Session())
{
    session.Open(sessionOptions);
}
Run Code Online (Sandbox Code Playgroud)

但是,当我运行应用程序时,它达到了这个目的

session.Open(sessionOptions);
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

已断开连接:没有可用的支持身份验证方法(服务器已发送:publickey,gssapi-with-mic)

.net c# winscp winscp-net

5
推荐指数
1
解决办法
5013
查看次数

WinSCP .NET程序集拒绝RSA / DSA密钥指纹

我正在尝试使用WinSCP .NET程序集连接到WinSCP服务器。我遇到的问题是它炸弹检查主机密钥指纹。我已经创建了一个RSA密钥。我的代码如下:

var server = new WinSCP.SessionOptions();
server.UserName = "ftp_user";
server.Password = "******";
server.HostName = "192.x.x.x";
server.Protocol = WinSCP.Protocol.Sftp;
server.SshHostKeyFingerprint =
    "9f:39:52:d5:08:0c:1d:a8:02:c9:7e:44:49:7f:44:fb";

var session = new WinSCP.Session();            
session.Open(server);
Run Code Online (Sandbox Code Playgroud)

SshHostKeyFingerprint属性分配中,出现以下错误:

SSH主机密钥指纹“ 9f:39:52:d5:08:0c:1d:a8:02:c9:7e:44:49:7f:44:fb”与模式/(ssh-rsa | ssh-dss不匹配)?\ d +([0-9a-f] {2}:){15} [0-9a-f] {2}(;(ssh-rsa | ssh-dss)?\ d +([0-9a- f] {2}:){15} [0-9a-f] {2})* /

如果我没有看错,它正在检查15个2个字符集,并分配了16个设置值。我从服务器获得了此值。

更新: 我所缺少的是指纹类型(ssh-dssssh-rsa)及其大小(10242048等等)。因此,答案如下:

server.SshHostKeyFingerprint =
    "ssh-rsa 1024 9f:39:52:d5:08:0c:1d:a8:02:c9:7e:44:49:7f:44:fb";
Run Code Online (Sandbox Code Playgroud)

如果我正确阅读了正则表达式,它不会让您知道在指纹类型之后需要指纹大小。

我希望这可以帮助其他人。感谢大家的见解和投入。

.net c# winscp rsa-key-fingerprint winscp-net

5
推荐指数
2
解决办法
4933
查看次数

使用带有临时文件名的WinSCP .NET/COM上传文件

我在C#中创建一个小型.NET应用程序,将文件上传到FTP服务器.我正在使用.NET DLL for WinSCP,我一直试图找到一个很好的解决方案来解决我的问题.

我将放置所有文件的FTP文件夹将由另一个应用程序监视.然后,此应用程序将采用这些文件并自动处理它们.

所以我想避免的是在传输完成之前我的文件被应用程序抓取.

所以我想使用临时文件名使用或可能是临时文件夹,然后在上传完成后移动文件.

你认为什么是最好的方法?第二个问题是,在WinSCP .NET中,应该有一个Transfer Resume选项,它使用临时名称传输文件,并在完成时重命名.但我似乎无法让这个工作,并正在寻找任何关于如何使这个工作的提示?

c# ftp temporary-files winscp-net

5
推荐指数
1
解决办法
6495
查看次数

使用WinSCP .NET程序集以流形式访问远程文件内容

我试图打开文件以使用WinSCP .NET程序集从SFTP读取,这与将文件从SFTP存档到Azure blob的练习相当。

要将blob上传到Azure,我正在使用

using (var fileStream = inputStream)
{
    blockBlob.UploadFromStream(fileStream);
    blobUri = blockBlob.Uri.ToString();
}
Run Code Online (Sandbox Code Playgroud)

如何从SFTP服务器上的文件获取流?

我设法使用SftpClient下面的代码来获取流,并且可以工作,但是不幸的是,使用WinSCP .NET程序集无法实现相同的目的。

sftpClient.OpenRead(file.FullName)
Run Code Online (Sandbox Code Playgroud)

谁能帮我使用WinSCP .NET程序集实现相同的目的?

因为我需要使用用户名,密码和私钥连接到SFTP,所以我使用的是WinSCP .NET程序集。

谢谢

c# winscp winscp-net azure-blob-storage

5
推荐指数
1
解决办法
2043
查看次数

WinSCP .NET程序集:如何下载目录

我用C#编写了一个使用System.IO.GetDirectoires()和的应用程序System.IO.GetFiles()

我现在必须将其转换为使用SFTP.我有PutFilesGetFilesWinSCP .NET程序集的经验,但我无法弄清楚如何获取目录列表.GetFileswinscp.exe中有一个我可以用于文件,但据我所知,没有办法获取目录.有没有人有办法做到这一点,或者是否有一个更容易使用的库.

// Setup session options
SessionOptions sessionOptions = new SessionOptions
{
    Protocol = Protocol.Sftp,
    HostName = "example.com",
    UserName = "user",
    Password = "mypassword",
    SshHostKeyFingerprint = "ssh-rsa 2048 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx"
};

using (Session session = new Session())
{
    // Connect
    session.Open(sessionOptions);
}
Run Code Online (Sandbox Code Playgroud)

c# sftp winscp winscp-net

5
推荐指数
1
解决办法
838
查看次数

WinSCP .NET 程序集在安装到 GAC for SSIS 时抛出“在程序集的位置找不到 winscp.exe 可执行文件”

我有一个包,它使用 WinSCP 从 FTP 下载文件,当我在本地执行它时,它运行得很好。但是当我们从 SSIS 数据库目录的已部署版本运行时,我们遇到了问题。已为 .dll 文件完成 GAC 注册。

下面是我们得到的错误。

在此处输入图片说明

更新

在此处输入图片说明

ssis gac winscp winscp-net

4
推荐指数
1
解决办法
5207
查看次数

如何在 WinSCP C# 中使用 Session.GetFiles 下载单个文件

因此,基本上我试图从服务器上的整个文件夹中仅下载一个文件。

文件夹“domain”现在包含这些文件:

文件1.txt
文件2.txt
文件3.txt

因此,正如我在 WinSCP 文档中看到的,如果我只想下载一个文件,我仍然应该使用Session.GetFiles()方法文档)和文件的完整路径。好吧,但我不明白我的问题是什么,因为它不起作用。

session.GetFiles("/domains/domain/File1.txt", Directory.GetCurrentDirectory());
Run Code Online (Sandbox Code Playgroud)

但是,如果我将远程路径更改为整个目录,而不是单个文件,我需要它效果很好,但我不需要所有三个 .txt 文件。

session.GetFiles("/domains/domain/", Directory.GetCurrentDirectory());
Run Code Online (Sandbox Code Playgroud)

.net c# winscp winscp-net

4
推荐指数
1
解决办法
5890
查看次数

使用 WinSCP .NET 程序集列出具有特定扩展名的文件

我正在使用 WinSCP .NET 程序集通过 C# .NET 通过 SFTP 进行下载和上传。我可以使用下载功能,但我正在寻找一种方法来列出远程服务器中的文件(或至少列出特定扩展名),因此用户只需从具有特定扩展名(例如 )的文件中进行选择即可.txt获取他们想要的文件。

有没有办法用 WinSCP .NET 程序集来做到这一点?

c# sftp winscp directory-listing winscp-net

3
推荐指数
1
解决办法
8828
查看次数

如何从私钥获取SFTP的密钥指纹?

由于我正在开发一个 .NET C# 项目,该项目使用 WinSCP .NET 程序集来实现 SFTP 无密码连接。到目前为止,我已经制作了一个 UI,我们必须在其中提供 SSH 密钥指纹、释义和.ppk文件路径。

我的问题是,如果用户仅给出其文件路径,有没有办法通过代码自动获取“SSH 密钥指纹” .ppk

.net sftp winscp public-key winscp-net

3
推荐指数
1
解决办法
6973
查看次数

如何删除"." 和带有C#和WinSCP的远程目录中的".."文件

我正在尝试使用SFTP连接从远程目录中获取文件计数,但我得到.并且..这些点数就像文件一样,我在远程目录中有2个文件,但是计算4个文件,包括....

有人可以帮我解决这个问题吗?

这是我的代码:

filesCount = session.ListDirectory(DataFile.sRemoteDirectory).Files.Count;                
Run Code Online (Sandbox Code Playgroud)

谢谢!

c# sftp winscp winscp-net

3
推荐指数
1
解决办法
1586
查看次数