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

如何在Ubuntu 22.04.3服务器上通过微软账号+2FA的SSO认证编写Bash脚本从TeamCity下载构建制品?

如何在Ubuntu 22.04.3服务器上通过微软账号+2FA的SSO认证编写Bash脚本从TeamCity下载构建制品?

你遇到的这个场景确实有点棘手——毕竟SSO+2FA的交互式验证和bash脚本的自动化需求天生不太兼容,但别担心,有个靠谱的解决方案:使用TeamCity个人访问令牌(PAT)绕开SSO认证,这也是官方推荐的自动化场景认证方式。

第一步:生成TeamCity个人访问令牌

因为你的TeamCity是SSO-only模式,所以得先通过网页端登录(用微软账号+2FA完成验证),然后生成专属的访问令牌:

  • 登录TeamCity后,点击右上角的头像,选择「Profile」进入个人设置
  • 切换到「Access Tokens」标签页,点击「Create token」
  • 给令牌起个好记的名字(比如「Ubuntu脚本下载制品」),设置合适的有效期,最重要的是勾选必要的权限:至少要选「Builds」分类下的「View builds」和「Download artifacts」,遵循最小权限原则,别给多余权限
  • 生成后务必复制保存好令牌,因为页面刷新后就看不到完整内容了

第二步:编写Bash下载脚本

有了PAT之后,就可以用curl调用TeamCity的API来下载制品了,下面是一个可直接修改使用的脚本示例:

#!/bin/bash

# ===== 请根据你的实际情况修改以下参数 =====
# TeamCity服务器地址(比如https://teamcity.yourcompany.com)
TEAMCITY_SERVER="https://your-teamcity-instance.com"
# 构建类型ID:在TeamCity构建配置的页面URL里能找到,格式类似BT123
BUILD_TYPE_ID="BT123"
# 构建版本:可以填具体的构建号,或者用"lastSuccessful"获取最后一次成功构建的制品
BUILD_NUMBER="lastSuccessful"
# 要下载的制品路径:比如"dist/app.tar.gz",如果要下载整个目录,填"dist/"并在URL末尾加?archive=zip
ARTIFACT_PATH="dist/app.tar.gz"
# 你刚才生成的个人访问令牌
PAT="your-personal-access-token-here"
# 本地保存路径
OUTPUT_FILE="./app.tar.gz"
# =========================================

# 执行下载命令
curl -fL -u ":$PAT" "$TEAMCITY_SERVER/repository/download/$BUILD_TYPE_ID/$BUILD_NUMBER/$ARTIFACT_PATH" -o "$OUTPUT_FILE"

# 检查下载结果
if [ $? -eq 0 ]; then
    echo "✅ 制品下载成功,已保存到 $OUTPUT_FILE"
else
    echo "❌ 制品下载失败,请检查参数或网络连接"
    exit 1
fi

一些实用提示

  • 如果要下载整个目录的制品,把ARTIFACT_PATH设为目录名(比如dist/),然后把URL改成"$TEAMCITY_SERVER/repository/download/$BUILD_TYPE_ID/$BUILD_NUMBER/$ARTIFACT_PATH?archive=zip",这样会把目录打包成zip下载
  • 测试脚本时可以给curl加-v参数,查看详细请求日志,方便排查认证或路径问题
  • 如果你的TeamCity用的是自签名SSL证书,curl可能会报错,这时候可以临时加--insecure参数,但更安全的做法是把证书导入Ubuntu的系统信任存储
  • 记得定期更换PAT,尤其是当令牌过期或者权限需要调整的时候

为什么不直接用SSO+2FA?

bash脚本很难处理2FA的交互式验证(比如输入手机验证码),而且SSO会话依赖浏览器的cookie,cookie不仅会过期,还容易泄露,安全性远不如PAT,所以官方也更推荐用PAT来做自动化场景的认证。

备注:内容来源于stack exchange,提问作者Ubuntu Learner

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 09:32:57