Ubuntu 22.04服务器通过Bash用SSO从TeamCity下载构建产物遇认证问题
在Ubuntu 22.04.3上通过wget从微软SSO+2FA的TeamCity下载构建产物
直接用wget --user/--password参数无法成功,因为TeamCity启用微软SSO后,不再支持标准HTTP基础认证,而是需要通过微软的SSO流程完成身份验证,wget的基础认证参数无法处理SSO跳转和2FA验证,因此会返回401错误。
下面是两种可行的解决方案:
方法一:使用TeamCity个人访问令牌(PAT,推荐)
这是最稳定的方案,无需依赖SSO会话:
- 登录TeamCity网页端,点击右上角头像 → My Settings & Tools
- 在左侧菜单选择Access Tokens,点击Create token
- 填写令牌名称、设置过期时间,勾选至少Download artifacts权限,生成令牌后复制保存(令牌仅显示一次)
- 使用wget下载,命令格式:
若上述命令无效,可尝试将PAT作为用户名,密码留空:wget --user="你的微软账号用户名" --password="生成的PAT令牌" -v https://teamcity***.isowget --user="生成的PAT令牌" --password="" -v https://teamcity***.iso
方法二:使用浏览器导出的认证Cookie(临时方案)
适合临时下载,Cookie过期后需重新导出:
- 在本地浏览器打开TeamCity,完成微软SSO和2FA登录
- 用浏览器插件(如Chrome的「Get Cookies.txt LOCALLY」)导出TeamCity域名下的所有Cookie为Netscape格式文件
- 将Cookie文件上传到Ubuntu服务器
- 执行wget命令加载Cookie:
wget --load-cookies cookies.txt -v https://teamcity***.iso
内容的提问来源于stack exchange,提问作者Ubuntu Learner
相关产品推荐
相关产品推荐

