以下内容未列出/ home目录中的文件,而是列出/(root)目录中的文件: sftp.ChangeDirectory("home"); sftp.ListDirectory("").Select (s => s.FullName); 以下不起作用并返回SftpPathNotFoundException: sftp.ChangeDirectory("home"); sftp.ListDirectory("home").Select (s => s.FullName); 以下是列出/ home目录中文件的正确方法 sftp.ChangeDirectory("/"); sftp.ListDirectory("home").Select (s => s.FullName); 递归获取 void Main() { using (var client = new Renci.SshNet.SftpClient("sftp.host.com", "user", "password")) { var files = new List<String>(); client.Connect(); ListDirectory(client, ".", ref files); client.Disconnect(); files.Dump(); } } //注意:递归的时候需要过滤文件名为.或者..的文件夹否则会进去死循环 void ListDirectory(SftpClient client, String dirName, ref List<String> files) { foreach (var entry in client.ListDirectory(dirName)) { //跳过.或者..避免死循环 if (entry.Name == "." || entry.Name == "..") continue; if (entry.IsDirectory) { ListDirectory(client, entry.FullName, ref files); } else { files.Add(entry.FullName); } } }