OSError:隧道连接失败:需要 407 代理授权 - snowsql

Posted

技术标签:

【中文标题】OSError:隧道连接失败:需要 407 代理授权 - snowsql【英文标题】:OSError: Tunnel connection failed: 407 Proxy Authorization Required - snowsql 【发布时间】:2020-08-03 19:46:35 【问题描述】:

我正在尝试使用命令行参数 snowsql -c 示例连接到雪花数据库,但出现以下错误。

Failed to execute request:HTTPSConnectionPool(host='xyz.azure.snowflakecomputing.com', port=443): Max retries exceeded with url: /session/v1/login-request?request_id=90925166-6058-4526-bdc8-46b3710576c6&request_guid=ff7507a5-7368-46d6-89e5-155b00fb651a (Caused by ProxyError('Cannot connect to proxy.', OSError('Tunnel connection failed: 407 Proxy Authentication Required',)))

【问题讨论】:

【参考方案1】:

需要代理验证

您的连接似乎是通过需要身份验证的代理进行的。根据 snowsql 帮助:

 --proxy-host TEXT               (DEPRECATED. Use HTTPS_PROXY and HTTP_PROXY
                                 environment variables.) Proxy server
                                 hostname. Honors $SNOWSQL_PROXY_HOST.

因此我认为您想要配置 HTTPS_PROXY。你可以这样做:

HTTPS_PROXY=http://user:password@proxy:port/ 

例如

export HTTPS_PROXY=http://user:password@proxy:port/
snowsql

env HTTPS_PROXY=http://user:password@proxy:port/  snowsql

【讨论】:

感谢您的回答!我能够使用本地机器上的相同代理成功连接到雪花数据库,而无需设置任何环境变量。现在,我试图在远程服务器上做同样的事情,我遇到了这个问题。我已经设置了环境变量,但没有用户名和密码。该代理是公司提供的。我不知道代理可以有用户名和密码。我不确定用户名和密码可能是什么,需要弄清楚。 他们可能不需要来自本地计算机的身份验证,因为您是唯一登录的用户,但在远程服务器上,可能是任何人,因此他们需要用户名/密码进行审核。 尝试使用用户名和密码更新环境变量,仍然得到同样的错误。【参考方案2】:

尝试将NO_PROXY="xyz.azure.snowflakecomputing.com" 添加到您机器上的环境变量中,例如

export NO_PROXY="xyz.azure.snowflakecomputing.com"

【讨论】:

以上是关于OSError:隧道连接失败:需要 407 代理授权 - snowsql的主要内容,如果未能解决你的问题,请参考以下文章

无法通过代理进行隧道传输。代理通过 https 返回“HTTP/1.1 407”

在需要身份验证但不返回 407 的代理后面打开 http 连接

需要 TFS PowerTools 代理身份验证 HTTP 代码 407

HTTPS URL 的基本代理身份验证返回 HTTP/1.0 407 需要代理身份验证

OSError:HDFS 连接失败(Python)

Gunicorn 因 OSError 失败:[Errno 107] 传输端点未连接