0

0

如何诊断并解决Composer的"Could not read from remote repository" SSH错误? (公钥认证)

裘德小鎮的故事

裘德小鎮的故事

发布时间:2026-01-15 17:41:02

|

695人浏览过

|

来源于php中文网

原创

SSH密钥问题需分步排查:先验证密钥存在且已加载,再测试SSH连通性,检查Git配置与composer.json中仓库URL类型是否匹配,并确认~/.ssh/config中Host配置准确无误。

如何诊断并解决composer的\

确认 SSH 密钥是否已正确生成并加载

这个错误通常不是 Composer 本身的问题,而是 Git 在尝试通过 SSH 克隆私有仓库(比如 GitHub、GitLab 或自建 Git 服务器)时失败。第一步必须验证本地 SSH 密钥状态。

  • 运行 ssh-keygen -l -f ~/.ssh/id_rsa 确认密钥存在且可读;若提示“No such file”,需先用 ssh-keygen -t ed25519 -C "your_email@example.com" 生成
  • 执行 ssh-add -l 检查密钥是否已载入 agent;若无输出,运行 ssh-add ~/.ssh/id_rsa(或对应私钥路径)
  • 某些系统(如 macOS Catalina+)默认不自动启动 ssh-agent,需手动启用或配置 ~/.zshrc 加入 eval "$(ssh-agent -s)"

测试 SSH 连通性与权限是否匹配

Composer 调用的是系统 Git,Git 调用的是 SSH,所以必须能直接用 SSH 访问目标仓库地址。不能只依赖 HTTPS 配置或网页登录状态。

  • 用 Git 托管平台提供的测试命令验证:例如 GitHub 是 ssh -T git@github.com,GitLab 是 ssh -T git@gitlab.com
  • 如果返回 Permission denied (publickey),说明密钥未被接受——常见原因是公钥没添加到对应账户的 SSH Keys 设置页,或添加时多粘贴了空格/换行
  • 注意区分 git@github.com:vendor/package.githttps://github.com/vendor/package.git;Composer 默认优先走 SSH,除非你在 composer.json 中显式指定 "url": "https://..."

检查 Composer 的 Git 配置与仓库 URL 类型

Composer 会读取全局或项目级 Git 配置,并可能根据 composer.json 中的 repositories 定义覆盖默认行为。错误常出现在混合使用 HTTPS 和 SSH 场景中。

VALL-E
VALL-E

VALL-E是一种用于文本到语音生成 (TTS) 的语言建模方法

下载
  • 运行 git config --global url."https://".insteadOf git:// 是常见优化,但它也可能干扰私有 SSH 仓库——确认没有误配 git@ 域名为 https://
  • 检查 composer.json 中是否定义了自定义仓库,例如:
    {
        "repositories": [
            {
                "type": "vcs",
                "url": "git@github.com:myorg/private-package.git"
            }
        ]
    }
    确保该 URL 可被本地 SSH 正确解析
  • 临时切换为 HTTPS 测试是否是 SSH 环境问题:把 git@github.com:myorg/pkg.git 改成 https://github.com/myorg/pkg.git,再运行 composer update;若成功,问题就锁定在 SSH 环境

排查 SSH 配置文件(config)中的 Host 别名冲突

很多人为了管理多个 Git 账户,在 ~/.ssh/config 中设置了 Host 别名(如 Host github-work),但 Composer/Git 不会自动识别别名写法,除非 URL 显式使用该别名。

  • composer.json 写的是 git@github.com:...,而你的 ~/.ssh/config 只对 Host github-work 生效,则不会命中配置
  • 检查 ~/.ssh/config 是否包含类似 Host github.com 的精确匹配段,并确认其中 IdentityFile 指向正确的私钥
  • 避免在 config 中使用通配符(如 Host *)覆盖关键设置;可用 ssh -F ~/.ssh/config -vT git@github.com 查看实际加载的配置和认证过程
SSH 错误真正卡住人的地方,往往不是密钥本身,而是 Git、SSH config、Composer 三者之间某一层的 URL 解析或代理逻辑没对齐。调试时优先用 ssh -Tgit clone 复现,比直接跑 composer install 更快定位。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
composer是什么插件
composer是什么插件

Composer是一个PHP的依赖管理工具,它可以帮助开发者在PHP项目中管理和安装依赖的库文件。Composer通过一个中央化的存储库来管理所有的依赖库文件,这个存储库包含了各种可用的依赖库的信息和版本信息。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

162

2023.12.25

json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

458

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

549

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

337

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

83

2025.09.10

github中文官网入口 github中文版官网网页进入
github中文官网入口 github中文版官网网页进入

github中文官网入口https://docs.github.com/zh/get-started,GitHub 是一种基于云的平台,可在其中存储、共享并与他人一起编写代码。 通过将代码存储在GitHub 上的“存储库”中,你可以: “展示或共享”你的工作。 持续“跟踪和管理”对代码的更改。

4515

2026.01.21

自建git服务器
自建git服务器

git服务器是目前流行的分布式版本控制系统之一,可以让多人协同开发同一个项目。本专题为大家提供自建git服务器相关的各种文章、以及下载和课程。

999

2023.07.05

git和svn的区别
git和svn的区别

git和svn的区别:1、定义不同;2、模型类型不同;3、存储单元不同;4、是否拥有全局版本号;5、内容完整性不同;6、版本库不同;7、克隆目录速度不同;8、分支不同。php中文网为大家带来了git和svn的相关知识、以及相关文章等内容。

582

2023.07.06

chatgpt使用指南
chatgpt使用指南

本专题整合了chatgpt使用教程、新手使用说明等等相关内容,阅读专题下面的文章了解更多详细内容。

0

2026.03.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WEB前端教程【HTML5+CSS3+JS】
WEB前端教程【HTML5+CSS3+JS】

共101课时 | 10.3万人学习

JS进阶与BootStrap学习
JS进阶与BootStrap学习

共39课时 | 3.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号