gpt4 book ai didi

c# - 无法在 C# 中使用 SSH.NET 上传文件 SFTP - 权限被拒绝

转载 作者:IT王子 更新时间:2023-10-29 04:29:46 30 4
gpt4 key购买 nike

我正在尝试使用 C# 使用 SSH.NET 库使用 SFTP 协议(protocol)上传文件。下面是我使用的代码

FileInfo f=new FileInfo("C:\\mdu\\abcd.xml");            
string uploadfile=f.FullName;
Console.WriteLine(f.Name);
Console.WriteLine("uploadfile"+uploadfile);
var client = new SftpClient(host, port, username, password);
client.Connect();
if(client.IsConnected){
Console.WriteLine("I AM CONNECTED");
}
var fileStream = new FileStream(uploadfile, FileMode.Open);
if(fileStream!=null){
Console.WriteLine("YOU ARE NOT NULL");
}
client.BufferSize = 4 * 1024;
client.UploadFile(fileStream, f.Name,null);
client.Disconnect();
client.Dispose();

我能够连接并且 filestream 也不为 NULL。但是我在尝试上传文件时收到 PermissionDeniedException

Unhandled Exception: Renci.SshNet.Common.SftpPermissionDeniedException: Permission denied
at Renci.SshNet.Sftp.SftpSession.RequestOpen(String path, Flags flags, Boolean nullOnError)
at Renci.SshNet.SftpClient.InternalUploadFile(Stream input, String path, Flags flags, SftpUploadAsyncResult asyncResult, Action`1 uploadCallback)
at Renci.SshNet.SftpClient.UploadFile(Stream input, String path, Boolean canOverride, Action`1 uploadCallback)
at Renci.SshNet.SftpClient.UploadFile(Stream input, String path, Action`1 uploadCallback)
at movemsi.Program.UploadFile()
at movemsi.Program.Main(String[] args)

上面的代码中是否缺少任何设置。非常感谢任何帮助。

最佳答案

您需要指定上传文件的完整路径。

例如:

client.UploadFile(fileStream, "/home/user/" + f.Name, null);

如果没有路径,SFTP 服务器可能会尝试将文件写入根文件夹或您没有写入权限的其他文件夹(因此权限被拒绝)。

关于c# - 无法在 C# 中使用 SSH.NET 上传文件 SFTP - 权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32878179/

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