You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Functions基于.NET Core向SFTP服务器发送文件的方案咨询

.NET Core 环境 SFTP 连接方案

你之前看到的SSH.NET仅兼容.NET Framework是旧版本的说明,目前最新稳定版的SSH.NET已经支持.NET Standard 2.0,完全适配所有LTS版本的.NET Core、.NET 5+以及Azure Functions的进程内/隔离进程运行时,直接安装SSH.NET NuGet包即可使用。
如果有特殊场景无法使用SSH.NET,可选替代方案为WinSCP-NetStandard NuGet包,同样兼容.NET Core环境。

SFTP 连接后文件上传实现步骤

以SSH.NET为例,上传文件的代码逻辑如下:

using Renci.SshNet;
using System.IO;

// 1. 配置连接参数
var sftpHost = "SFTP服务器地址";
var sftpPort = 22;
var sftpUser = "登录账号";
var sftpPwd = "登录密码";
// 若使用密钥认证,可替换为PrivateKeyAuthenticationMethod
var connectionInfo = new ConnectionInfo(sftpHost, sftpPort, sftpUser, 
    new PasswordAuthenticationMethod(sftpUser, sftpPwd));

// 2. 建立连接并上传文件
using (var sftpClient = new SftpClient(connectionInfo))
{
    sftpClient.Connect();
    
    // 本地待上传文件路径
    var localFile = @"C:\local\test.txt";
    // 服务器端目标存储路径,需确保对应目录存在
    var remotePath = "/upload/test.txt";
    
    using (var fs = File.OpenRead(localFile))
    {
        // 第三个参数为true时表示覆盖服务器端已存在的同名文件
        sftpClient.UploadFile(fs, remotePath, true);
    }
    
    sftpClient.Disconnect();
}

注意事项

  • 若你使用的是消费级计划的Azure Functions,需要将函数的所有出站IP添加到SFTP服务器的IP白名单中,同时确保服务器22端口对公网开放
  • 大文件上传建议开启分块上传逻辑,同时根据你使用的Azure Functions计划类型调整最大执行超时时间,避免上传过程中函数被强制终止
  • 生产环境建议使用密钥认证替代密码认证,安全性更高

内容的提问来源于stack exchange,提问作者azureLover

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 13:45:03