Нет поддержки SFTP в .NET Framework, ни в одной версии.
Ответ Sanj показывает, как использовать WinSCP , запустив консольное приложение. Хотя это действительно возможно, где на самом деле сборка WinSCP .NET , которая делает это для разработчика, предоставляя ему / ее собственный интерфейс .NET для сценариев WinSCP.
Существует даже пакет WinSCP NuGet .
Пример тривиальной загрузки SFTP на C #:
// Setup session options
SessionOptions sessionOptions = new SessionOptions
{
Protocol = Protocol.Sftp,
HostName = "example.com",
UserName = "user",
Password = "mypassword",
SshHostKeyFingerprint = "ssh-rsa 2048 xxxxxxxxxxx...="
};
using (Session session = new Session())
{
// Connect
session.Open(sessionOptions);
// Upload files
session.PutFiles(@"d:\toupload\*", "/home/user/").Check();
}
И то же самое для VB.NET:
.
' Setup session options
Dim sessionOptions As New SessionOptions
With sessionOptions
.Protocol = Protocol.Sftp
.HostName = "example.com"
.UserName = "user"
.Password = "mypassword"
.SshHostKeyFingerprint = "ssh-rsa 2048 xxxxxxxxxxx...="
End With
Using session As New Session
' Connect
session.Open(sessionOptions)
' Upload files
session.PutFiles("d:\toupload\*", "/home/user/").Check()
End Using
Есть много других примеров на обоих языках (и более).
Вы можете иметь WinSCP GUI для генерации шаблона кода SFTP , как описано выше, для вас, включая C #, VB.NET и PowerShell.
Как уже упоминалось выше, сборка - это просто оболочка для сценариев WinSCP, поэтому она не является полностью нативным .NET-кодом. Как таковой, он не подходит для всех вариантов использования в .NET Framework. Он в основном подходит для автоматизации задач, а не для разработки графического интерфейса или веб-приложений.
Для полностью нативной библиотеки .NET SFTP см. SSH.NET , что, как ни странно, пока не упоминается ни в одном ответе.
(я автор WinSCP)