.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
相关产品推荐
相关产品推荐

