使用 sudo returns 的卷曲连接被拒绝,但普通卷曲运行正常

Curl with sudo returns connection refused, but plain curl runs fine

以下运行没问题

curl https://packagecloud.io/install/repositories/github/git-lfs/config_file.list?os=Ubuntu\&dist=xenial\&source=script

但是如果我运行它和sudo它returns一个错误:

curl: (7) Failed to connect to packagecloud.io port 443: Connection refused

为什么?

注意:我使用公司代理。

curl 读取 <url scheme>_proxy(在本例中为 https_proxy)或 all_proxy 环境变量以设置要使用的默认代理服务器(如记录 here)。但是,默认情况下,sudo 在最小环境(env_reset 设置)中执行命令。

可以使用 -E (--preserve-env) 命令行选项暂时禁用此安全功能,以便保留现有的环境变量。白名单的各个环境变量可以指定为逗号分隔的列表:

sudo --preserve-env=https_proxy curl ...

这可以使用 sudoers 文件中的 env_keep 设置永久化。例如,要为所有用户保留所有以 _proxy 结尾的环境变量:

Defaults env_keep += "*_proxy"