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

使用SSH.NET通过SOCKS5代理连接SFTP时遇「连接规则不允许」错误

使用SSH.NET通过SOCKS5代理连接SFTP报错:Connection not allowed by ruleset

错误详情

KO > Exception :
Message : 'SOCKS5: Connection not allowed by ruleset.'
StackTrace :
at Renci.SshNet.Connection.Socks5Connector.HandleProxyConnect(IConnectionInfo connectionInfo, Socket socket)
at Renci.SshNet.Connection.Socks5Connector.Connect(IConnectionInfo connectionInfo)
at Renci.SshNet.Session.Connect()
at Renci.SshNet.BaseClient.CreateAndConnectSession()
at Renci.SshNet.BaseClient.Connect()
at Debug.Program.Main(String[] args) in C:\DEV\ruche\Debug\Program.cs:line 17

使用相同参数通过FileZilla可正常连接,但SSH.NET代码连接失败。

代码示例

获取SftpClient的方法

public SftpClient GetClient()
{
    if (string.IsNullOrEmpty(Proxy_Adresse) == false)
    {
        ConnectionInfo lInfos = new ConnectionInfo(Adresse, //My SFTP adresse
                                              Port,  // 22 
                                              Username, //My SFTP User
                                              ProxyTypes.Socks5,
                                              Proxy_Adresse,
                                              Proxy_Port, //1080
                                              Proxy_Username, //empty in my case
                                              Proxy_Password, //empty in my case
                                              new PasswordAuthenticationMethod(Username, Password)); //My SFTP User / Password

        return new SftpClient(lInfos);

    }
    else
    {
        return new SftpClient(Adresse, Port, Username, Password);
    }
}

连接调用代码

using (var lClient = lSFTP.GetClient())
{
    lClient.Connect();
    Console.WriteLine("OK");
}

排查方向与解决方案

  • 检查代理地址格式:SSH.NET不支持在代理地址中添加socks5://这类协议前缀,确保Proxy_Adresse仅传入纯IP或域名(比如192.168.1.100而非socks5://192.168.1.100),FileZilla会自动兼容前缀,但SSH.NET无法识别。
  • 显式指定代理空认证:即使代理用户名密码为空,部分SOCKS5代理要求明确发送空认证包,可手动添加认证方法:
    var proxyAuth = new NoneAuthenticationMethod();
    ConnectionInfo lInfos = new ConnectionInfo(...)
    {
        ProxyAuthenticationMethod = proxyAuth
    };
    
  • 升级SSH.NET版本:旧版本SSH.NET的SOCKS5代理模块存在规则兼容bug,建议升级到2020.0.0及以上的稳定版本。
  • 本地解析SFTP服务器地址:若代理不支持远程域名解析,先在本地将SFTP服务器域名解析为IP地址,再将IP传入ConnectionInfo的Adresse参数(FileZilla默认本地解析域名,而SSH.NET可能默认让代理解析)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 12:32:18