使用 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"
以下运行没问题
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"