新闻中心
如何解决 Composer 在 macOS 上因 keychain 权限导致的认证失败?
Composer在macOS因keychain权限拒绝导致Git认证失败,需检查钥匙串凭据权限、配置git credential.helper为osxkeychain、避免Composer回退HTTPS,并重置Git凭据触发重新授权。

Composer
在 macOS 上因 keychain 权限拒绝访问凭据,会导致 git clone 或私有包安装时认证失败(如 401 Unauthorized 或 Permission denied (publickey)),根本原因是 Git 尝试从系统 keychain 读取凭证时被 macOS 安全策略拦截。
检查并修复 keychain 中的 Git 凭据条目
macOS 的钥匙串可能存有损坏、过期或权限受限的 Git 凭据(如 github.com、gitlab.com 等)。打开“钥匙串访问”应用,搜索 github.com 或对应 Git 域名,找到类型为 Internet password 的条目。双击打开,点击“访问控制”,确认“允许所有应用程序访问此项目”已勾选;若未勾选,勾选后点击“好”保存。也可直接删除旧条目,让 Git 下次自动重新存储(需配合正确的凭据配置)。
确保 Git 使用 osxkeychain 正确辅助工具
运行以下命令确认 Git 已启用 keychain 辅助:
git config --global credential.helper
应输出 osxkeychain。若为空或错误,执行:
微软爱写作
微软出品的免费英文写作/辅助/批改/评分工具
130
查看详情
git config --global credential.helper osxkeychain- 如果使用 Apple Silicon Mac 且 Homebrew 安装了 Git,可能需用
git config --global credential.helper /opt/homebrew/bin/git-credential-osxkeychain(路径以which git-credential-osxkeychain输出为准)
避免 Composer 绕过 Git 凭据(禁用 https 回退)
Composer 默认在 SSH 失败时自动回退到 HTTPS,而 HTTPS 依赖 keychain 存储的用户名/密码。若你本意是走 SSH(如私有 GitLab 仓库),却因 keychain 拒绝导致 HTTPS 认证失败,可强制 Composer 仅用 SSH:
- 在
composer.json中为仓库指定"type": "vcs"并确保 URL 是git@...格式(非https://...) - 运行
composer config --global github-oauth.github.com <your_token></your_token>(仅适用于 GitHub)或改用 SSH 密钥认证 - 临时禁用 HTTPS 回退:设置环境变量
export COMPOSER_DISABLE_HTTPS=1(不推荐长期使用)
重置 Git 凭据并触发重新授权
清除当前缓存的凭据,让 Git 重新弹出授权窗口(注意:需确保钥匙串权限已按第一点设好):
-
git credential reject,然后输入: protocol=httpshost=github.com-
username=(留空后回车) - 之后执行任意需要认证的 Git 操作(如
git ls-remote git@github.com:vendor/package.git),macOS 会再次提示授权
基本上就这些。关键是钥匙串权限放开 + Git 辅助工具配置正确 + Composer 不意外降级到 HTTPS。不复杂但容易忽略权限细节。
以上就是如何解决 Composer 在 macOS 上因 keychain 权限导致的认证失败?的详细内容,更多请关注其它相关文章!
# 这类
# 潜江品牌推广网站有哪些
# 惠普网络营销推广策略
# 四川网站推广产品
# 呈贡营销推广优惠
# 眉山科技企业网站建设
# zencart 1.5.1 seo
# 芝罘区全网营销推广开发
# 商场餐饮营销推广方案
# 亳州租房网站建设
# 揭阳网站优化哪家强
# 中文网
# 相关文章
# 也可
# 适用于
# 如何处理
# macos
# 勾选
# 放在
# 如何解决
# 微软
# a
# mac
# 工具
# internet
# app
# github
# json
# git
# js
# word
# composer
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
包子漫画官方网站在线链接-包子漫画在线阅读平台主页地址
《主播少女的秘密账号迷宫》首支宣传片
QQ邮箱正确登录入口_QQ邮箱官方网站使用地址
css绝对定位元素脱离父容器怎么办_确保父元素position非static
淘宝网网页版登录入口 淘宝官方网页版快捷登录
电脑屏幕颜色不舒服怎么办_Windows夜间模式与色彩校准教程【护眼技巧】
XML中包含HTML标签导致解析错误? 正确嵌入非XML数据的两种方法
Promise错误处理:在catch后终止链式then执行的策略
Angular中父组件异步更新子组件复选框状态的实践指南
谷歌学术网站直达地址 谷歌学术搜索网页版一键进入
J*aScript:在map操作中高效处理空数组
css滚动动画效果怎么实现_使用Animate.css滚动触发动画类
解决Flask中Quill编辑器内容提交失败及TypeError的指南
Animex动漫社网入口地址 Animex动漫社网正版在线入口
c++20的std::jthread是什么_c++可中断线程与RAII式管理
Python多版本共存与虚拟环境管理深度指南
抖音隐秘迷城小游戏入口_ 抖音冒险解谜小游戏秒玩
CSS Flexbox如何实现多行排列_flex-wrap wrap自动换行显示
搜狗浏览器如何使用密码生成器创建强密码 搜狗浏览器内置密码安全工具
c++如何实现一个简单的ECS框架_c++数据驱动设计与游戏开发
QQ邮箱官方邮箱登录入口 QQ邮箱网页版快速访问
Python自定义类排序:解决lambda键值访问TypeError的实践指南
Lar*el头像管理:图片缩放与旧文件删除的最佳实践
深入理解字体排版:Adobe光学字偶距与CSS字偶距的差异与实现
三星ZFold5多任务卡顿_Samsung ZFold5流畅度提升
Golang如何安装Swagger工具_GoSwagger文档生成环境
C++编译期如何执行复杂计算_C++模板元编程(TMP)技巧与应用
MAC怎么在地图App里使用“四处看看”_MAC体验部分城市的3D实景街景
神庙逃亡小游戏在线玩 神庙逃亡小游戏入口
如何优雅地扩展SprykerGlue后端API授权逻辑,使用spryker/glue-backend-api-application-authorization-connector-extension
c++ 命名空间怎么用 c++ namespace使用指南
PHP高效扁平化嵌套数组:使用array_merge与数组解包操作符
蛙漫2日版入口 WAMAN2(日版)无删减漫画官网链接
在Pyomo中实现基于变量的条件约束:Big-M方法详解
在python-socketio事件处理器中安全访问Flask应用上下文
微信群消息显示延迟如何解决 微信群消息刷新优化方法
狙击外星人小游戏开始_狙击外星人小游戏立即开始
J*aScript map 迭代中检测空数组元素的有效方法
在J*a中如何开发简易仓库管理与库存统计_仓库管理库存统计项目实战解析
Golang如何使用new_Go new分配内存机制讲解
快手极速版在线观看 官方网页版登录地址
C#中解析不规范的HTML为XML 常见的坑与解决办法
12306选座如何查看座位示意图_12306座位示意图解读与使用
优化LangChain文档加载与ChromaDB集成:解决多文档处理与分块问题
win11如何卸载Windows更新补丁 Win11解决更新导致系统不稳定的问题【修复】
痛风发作了怎么办? 快速止痛和后期饮食调理
知音漫客正版漫画平台_知音漫客官网账号登录
照顾宝贝2小游戏免费秒玩入口
如何使用Rector自动化升级旧代码_通过Composer安装和配置Rector进行代码重构
QQ邮箱官方网站登录入口_QQ邮箱网页版在线使用


2025-12-12
浏览次数:次
返回列表