使用sfdx JWT授权Salesforce时出现getaddrinfo ENOTFOUND报错
Salesforce JWT 授权异常排查
异常场景
通过JWT方式完成Salesforce授权时执行命令失败,执行的授权命令如下:
sfdx force:auth:jwt:grant --clientid **** --jwtkeyfile **** --username **** --instanceurl https://test.salesforce.com
报错信息
执行命令后抛出如下错误:
运行auth:jwt:grant命令出错:我们遇到了JSON web token错误,该问题大概率并非Salesforce CLI导致。具体错误信息:JWT配置认证失败,向OAuth token接口发起的所有请求均失败,错误原因统一为
getaddrinfo ENOTFOUND,涉及域名包括test.salesforce.com、login.salesforce.com。
根因判断
getaddrinfo ENOTFOUND是典型的DNS域名解析失败错误,说明当前运行Salesforce CLI的环境根本无法解析Salesforce的服务域名。这个问题和JWT密钥、Client ID、用户权限这类应用层配置没有任何关系,纯属于网络连通层故障,不用在授权参数上反复排查浪费时间。
解决步骤
- 先验证基础网络连通性:在当前终端执行
ping test.salesforce.com,如果直接返回找不到主机的提示,先确认当前网络能不能正常访问公网,别连外网都没通就折腾授权 - 检查代理配置:如果是在企业内网、必须走代理才能访问外网的环境,确认当前终端已经正确配置
HTTP_PROXY、HTTPS_PROXY环境变量,且所用代理节点本身可以正常连通Salesforce服务;如果不需要走代理,检查是不是误开了系统全局代理导致域名解析被拦截 - 检查本地hosts配置:打开系统hosts文件,确认没有手动给test.salesforce.com、login.salesforce.com配错IP映射,有错误条目直接删掉,之后刷新本地DNS缓存再重试
- 检查命令参数拼写:确认传入的
--instanceurl参数没有写错,沙箱环境固定填https://test.salesforce.com,生产环境固定填https://login.salesforce.com,别漏写https协议、也别多打冗余斜杠
内容的提问来源于stack exchange,提问作者Hema
相关产品推荐
相关产品推荐

