我该如何告诉Composer在给定的Composer存储库中使用哪个密钥?

10

我有以下这种情况:

我在Bitbucket上托管了一个私有仓库的项目,其中使用了部署密钥#1。

在该项目的composer文件中,有一个依赖项托管在Satis仓库,并通过另一个私有Bitbucket仓库拉取,使用的是部署密钥#2。

我将部署密钥#1存储在~/.ssh/id_rsa中,因此git pull可以直接使用,而将部署密钥#2存储在~/.ssh/id_composer中。如何告诉composer在运行composer update时使用第二个密钥呢?

目前我的composer.json文件如下,但没有帮助,我也找不到应该指定哪些必需选项。

"repositories": [
    {
    "type": "composer",
    "url": "http://custom-satis-repo-url",
    "options": {
        "git": {
        "pubkey_file": "~/.ssh/id_composer.pub",
        "privkey_file": "~/.ssh/id_composer"
        }
    }
    }
],

非常感谢您的帮助。

谢谢。


我更喜欢在composer.json文件中定义SSH身份的示例变体。但是,由于这不可用,下面@scipilot的解决方案可以使用。 - Brandon
1个回答

7

一个实现这个目标的方式是使用ssh配置文件。

更一般地说,这允许您配置SSH连接以使用特定凭据对“虚拟”主机进行连接,从而使您能够修改连接到Git存储库的方式,并因此可用于修改使用ssh的Composer依赖项。

编辑vim ~/.ssh/config 例如。

Host fake-repo-url
User git
HostName actual-repo-url
IdentityFile ~/.ssh/id_composer

您需要将fake-repo-urls放入satis package.json中,这样除了具有配置的人之外,其他人都无法使用它们-但我想这没关系,因为您正在限制访问。
(我使用这个技巧作为掩盖个人帐户的方式,用于只读部署主机上的“edit-remote”,这些主机需要非常偶尔的提交!)
有很多关于ssh config的指南,例如nixCraft上的这个链接
第二个想法:
或者,您可以研究Composer中的'scripts' option。 您可能能够在更新/安装过程中运行一些替换内容的脚本。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接