You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自托管代理(Selfhosted agent)无法获取环境变量值求助

问题排查与解决方法

核心原因

服务启动时(比如通过systemd)不会继承当前shell会话里的环境变量,svc.sh install只是在安装过程中临时加载了变量,但服务本身的启动配置里并未包含该变量,因此启动后变量会消失。

解决步骤

1. 直接修改代理服务的systemd配置

大部分现代Linux发行版用systemd管理服务,找到对应代理的服务文件:

  • 路径通常为/etc/systemd/system/vsts-agent-<username>-<hostname>.service(需替换成你的实际用户名和主机名)
  • 编辑该文件,在[Service]区块下添加:
    Environment="NODE_TLS_REJECT_UNAUTHORIZED=0"
    
  • 保存后重新加载systemd配置并重启服务:
    sudo systemctl daemon-reload
    sudo systemctl restart vsts-agent-<username>-<hostname>.service
    

2. 修改svc.sh脚本(避免重装后失效)

如果后续需要重新安装代理,希望自动带上该变量,可修改svc.sh:

  • 找到脚本中生成systemd服务文件的段落(通常包含[Service]相关内容)
  • 在对应位置插入Environment="NODE_TLS_REJECT_UNAUTHORIZED=0"
  • 执行卸载再重装操作:
    sudo ./svc.sh uninstall username
    sudo ./svc.sh install username
    

3. 验证变量是否生效

服务启动后,通过以下方式确认:

# 替换为你的服务名称
sudo systemctl show vsts-agent-<username>-<hostname>.service | grep Environment

或者查看代理进程的环境变量:

# 获取代理进程PID
pgrep -f agent
# 替换<PID>为实际进程号
cat /proc/<PID>/environ | tr '\0' '\n' | grep NODE_TLS_REJECT_UNAUTHORIZED

4. 替代方案:在启动脚本中硬编码变量

如果上述方法无效,直接修改runsvc.sh:

  • 在脚本开头添加:
    export NODE_TLS_REJECT_UNAUTHORIZED=0
    
  • 重启服务:
    sudo ./svc.sh restart username
    

内容的提问来源于stack exchange,提问作者silvathiago25

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 16:33:22