Python使用Snowflake Connector配合SMS验证码连接报错问题咨询
Snowflake Connector SMS MFA认证问题解答
报错行为判定
你遇到的报错属于正常预期行为。
Snowflake下发的SMS MFA验证码为单次有效,默认有效期仅3-5分钟,且仅当你主动发起新的认证请求时才会生成对应的有效验证码。你直接使用历史收到的旧验证码、未触发新的SMS下发请求的情况下提交参数,必然会返回Incorrect passcode was specified错误。
可行解决方案
- 先通过Snowflake网页端登录测试你的账号SMS MFA流程是否正常:输入账号密码后能正常触发SMS下发、填入实时收到的验证码可成功登录,先排除账号侧MFA配置错误的问题。
- 交互式登录场景下,参考以下配置调整连接器参数,不要提前传入固定的
passcode值,设置authenticator参数为username_password_mfa即可自动触发SMS下发,程序运行后在控制台提示输入时填入实时收到的验证码即可完成认证:
import snowflake.connector # 连接配置示例 conn = snowflake.connector.connect( user="<YOUR_USERNAME>", password="<YOUR_PASSWORD>", account="<YOUR_ACCOUNT_IDENTIFIER>", warehouse="<YOUR_WH_NAME>", database="<YOUR_DB_NAME>", schema="<YOUR_SCHEMA_NAME>", authenticator="username_password_mfa" )
- 非交互自动化场景下,不建议使用SMS MFA方式,可选择两种规避方案:
- 联系Snowflake账号管理员为你的访问IP段、或者对应服务账号配置MFA旁路规则,认证时无需校验MFA码
- 切换为密钥对认证方式,完全无需MFA交互即可完成连接
- 你也可以尝试重新绑定你的Duo Mobile账号:联系管理员重置你的MFA绑定状态,重新完成新手机的Duo Mobile绑定后即可恢复推送认证模式,无需处理SMS验证码逻辑。
内容的提问来源于stack exchange,提问作者SuperBanana
相关产品推荐
相关产品推荐

