gpt4 book ai didi

c# - 使用 Tamir.SharpSsh 的 SSH/SFTP 连接问题

转载 作者:太空狗 更新时间:2023-10-29 23:04:35 25 4
gpt4 key购买 nike

这是我连接远程 SFTP 服务器并将文件发送到服务器的代码。

public static void SendDocument(string fileName, string host, string remoteFile, string user, string password)
{
Scp scp = new Scp();

scp.OnConnecting += new FileTansferEvent(scp_OnConnecting);
scp.OnStart += new FileTansferEvent(scp_OnProgress);
scp.OnEnd += new FileTansferEvent(scp_OnEnd);
scp.OnProgress += new FileTansferEvent(scp_OnProgress);

try
{
scp.To(fileName, host, remoteFile, user, password);
}
catch (Exception e)
{
throw e;
}
}

我可以使用 CoreFTP 成功连接、发送和接收文件。因此,问题不在于服务器。当我运行上面的代码时,进程似乎停在了 scp.To 方法处。它只是无限期地挂起。

有人知道我的问题是什么吗?也许它与将 key 添加到 SSH 缓存有关?如果是这样,我该怎么做?

编辑: 我使用 wireshark 检查了数据包,发现我的计算机没有执行 Diffie-Hellman key 交换初始化。这一定是问题所在。

编辑:我最终使用了以下代码。请注意,已关闭 StrictHostKeyChecking 以简化操作。

            JSch jsch = new JSch();
jsch.setKnownHosts(host);

Session session = jsch.getSession(user, host, 22);
session.setPassword(password);

System.Collections.Hashtable hashConfig = new System.Collections.Hashtable();
hashConfig.Add("StrictHostKeyChecking", "no");
session.setConfig(hashConfig);

try
{
session.connect();

Channel channel = session.openChannel("sftp");
channel.connect();
ChannelSftp c = (ChannelSftp)channel;

c.put(fileName, remoteFile);

c.exit();
}
catch (Exception e)
{
throw e;
}

谢谢。

最佳答案

我使用 Tamir.SharpSSH - 最新版本 1.1.1.13

这有一个 SFTP 类。你可以直接使用这个类来做 SFTP 而不是使用 JSch,Session 类。

此处快速示例:

127.0.0.1 - 服务器 IP

/SFTPFolder1/SFTPFolder2 - 我希望我的文件所在的服务器位置

        Sftp sftpClient = new Sftp("127.0.0.1", "myuserName", "MyPassword");

sftpClient.Connect();

sftpClient.Put(@"C:\Local\LocalFile.txt", "/SFTPFolder1/SFTPFolder2");

如果您有任何问题,请告诉我。

关于c# - 使用 Tamir.SharpSsh 的 SSH/SFTP 连接问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1579333/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com