使用jfrog无法上传文件至Artifactory OSS的403权限问题求助
解决方案:JFrog CLI上传Artifactory报403 Forbidden(CSRF拦截)
根据你提供的日志和操作细节,问题根源是Artifactory的CSRF保护机制拦截了JFrog CLI的令牌请求,以下是具体解决方法:
1. 修正JFrog CLI的服务器配置URL
日志中显示请求被拦截的路径是/login/artifactory/api/security/token,说明CLI的服务器URL配置错误,导致请求路径带上了多余的/login前缀。
- 查看当前配置:
jf config show cctest - 如果输出的
url字段是http://<你的Mac IP或localhost>:8081,将其修改为Artifactory的API基础路径:
在编辑器中把jf config edit cctesturl更新为http://<你的Mac IP或localhost>:8081/artifactory,保存退出。 - 重新测试上传:
jf rt u "test.txt" testrepo --server-id=cctest
2. 调整Artifactory的CSRF排除规则
如果URL配置正确但问题仍存在,可以将令牌请求路径加入CSRF保护的排除列表:
- 登录Artifactory UI,进入Admin > Security > Settings
- 找到CSRF Protection模块,在Excluded Paths中添加:
/login/artifactory/api/security/token - 保存配置后,重启Artifactory容器:
docker restart artifactory - 再次执行上传命令测试。
3. 直接使用API密钥认证(跳过令牌自动获取)
绕过CLI自动获取令牌的流程,直接使用Artifactory生成的API密钥进行认证:
- 在Artifactory UI中,进入用户的Edit Profile > API Key,点击Generate API Key(管理员可在Admin > Users中为目标用户生成)
- 复制生成的API密钥,更新CLI配置:
jf config set cctest --apikey=<你的API密钥> - 确保配置的
url为http://<你的Mac IP或localhost>:8081/artifactory,然后测试上传。
额外验证步骤
确认Ubuntu机器与Mac Docker容器的连通性:
curl http://<你的Mac IP>:8081/artifactory/api/system/ping
如果返回OK,说明网络连通正常;若不通,检查Mac的防火墙设置是否开放8081端口。
内容的提问来源于stack exchange,提问作者thefwguy
相关产品推荐
相关产品推荐

