【问题标题】:How can I tell composer which key to use for a given composer repository?如何告诉作曲家为给定的作曲家存储库使用哪个密钥?
【发布时间】:2014-12-19 23:47:46
【问题描述】:

我有以下情况:

我有一个项目托管在 bitbucket 的私有存储库中,为此我使用部署密钥 #1。

在这个项目的 Composer 文件中,是一个托管在 satis 存储库上的依赖项,并使用部署密钥 #2 通过另一个私有 bitbucket 存储库拉取。

我将部署密钥 #1 存储在 ~/.ssh/id_rsa 中,因此 git pull 开箱即用,部署密钥 #2 存储在 ~/.ssh/id_composer 在运行 composer update 时如何告诉 composer 使用第二个键?

到目前为止,这是我在 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 下面的解决方案有效。

标签: php git ssh composer-php


【解决方案1】:

实现此目的的一种方法是使用 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 中,这会使它们对没有配置的任何人都无用 - 但我认为这很好,因为您限制了访问。

(我使用这个技巧作为在只读部署主机上屏蔽个人帐户以进行“编辑远程”的一种方式,这些主机需要非常偶尔的提交!)

ssh config 上有很多指南,例如this one at nixCraft

第二个想法:

您也可以调查'scripts' option in Composer。您也许可以运行一个脚本,在更新/安装过程中交换一些东西。

【讨论】:

    猜你喜欢
    • 2021-07-12
    • 2014-08-11
    • 2015-01-16
    • 1970-01-01
    • 1970-01-01
    • 2017-03-13
    • 2017-05-07
    • 2014-10-11
    • 1970-01-01
    相关资源
    最近更新 更多