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

.NET控制台应用通过RSA密钥连接Snowflake失败求助

.NET控制台应用通过RSA密钥连接Snowflake失败问题

问题描述

使用用户名和密码的连接字符串可正常工作:

account=ACCOUNTNAME;user=test; password=Test123;db=PROD_ANALYTICS;

但使用RSA密钥的连接无法成功,尝试的连接字符串:

account=ACCOUNTNAME;user=test;privateKey=values of the key;db=PROD_ANALYTICS;authenticator=snowflake;

尝试使用生成的DER文件后,收到错误:

Error: Required property PASSWORD is not provided. SqlState: , VendorCode: 270006

解决步骤

  • 确认密钥格式合规
    Snowflake的.NET驱动要求私钥必须是PKCS#8格式的PEM文件。如果你的密钥是PKCS#1格式,用OpenSSL转换:

    openssl pkcs8 -topk8 -inform PEM -in rsa_key.pem -outform PEM -nocrypt -out rsa_key_pkcs8.pem
    

    不要直接复制密钥文本到连接字符串,容易丢失换行符导致格式错误,优先用privateKeyFile参数指定文件路径。

  • 修正连接字符串
    移除authenticator=snowflake参数,RSA认证不需要这个配置。正确的连接字符串示例:

    account=ACCOUNTNAME;user=test;privateKeyFile=C:\keys\rsa_key_pkcs8.pem;db=PROD_ANALYTICS;
    

    如果必须传入密钥内容,要确保读取时完整保留包括-----BEGIN PRIVATE KEY-----和-----END PRIVATE KEY-----在内的所有字符。

  • 代码中正确加载密钥
    示例代码:

    using Snowflake.Data.Client;
    using System.IO;
    
    var privateKey = File.ReadAllText(@"C:\keys\rsa_key_pkcs8.pem");
    var connStr = $"account=ACCOUNTNAME;user=test;privateKey={privateKey};db=PROD_ANALYTICS;";
    
    using var connection = new SnowflakeDbConnection();
    connection.ConnectionString = connStr;
    connection.Open();
    
  • 验证Snowflake用户公钥配置
    执行SQL检查用户是否已关联对应公钥:

    SELECT PUBLIC_KEY FROM USERS WHERE NAME = 'test';
    

    如果未配置,执行以下命令添加:

    ALTER USER test SET RSA_PUBLIC_KEY='你的公钥内容';
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 00:26:02