如何告诉composer将哪个键用于给定的composer存储库?

Tud*_*dor 8 php git ssh composer-php

我有以下情况:

我在bitbucket上的私有存储库上托管了一个项目,我使用部署密钥#1.

在这个项目中,composer文件是一个托管在一个令人满意的存储库上的依赖项,并使用部署密钥#2通过另一个私有bitbucket存储库.

我将部署密钥#1存储在〜/ .ssh/id_rsa中,因此git pull开箱即用,部署密钥#2存储在〜/ .ssh/id_composer中如何在运行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"
        }
    }
    }
],
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激.

谢谢.

sci*_*lot 6

实现此目的的一种方法是使用ssh配置文件.

更一般地说,这允许您配置SSH连接以使用"虚拟"主机的特定凭据,从而允许您更改连接到Git repos的方式,因此可以用于修改使用ssh的Composer依赖关系.

编辑vim ~/.ssh/config例如

Host fake-repo-url
User git
HostName actual-repo-url
IdentityFile ~/.ssh/id_composer
Run Code Online (Sandbox Code Playgroud)

您需要将fake-repo-urls放入令人满意的package.json中,这会使任何没有配置的人都无用 - 但我认为这很好,因为您限制访问.

(我使用这个技巧来掩盖个人帐户在只读部署主机上的'编辑 - 远程',这需要非常偶然的提交!)

ssh配置上有很多指南,例如nixCraft上的这个指南

第二个想法:

或者,您可以调查Composer中"脚本"选项.您可能能够运行在更新/安装过程中交换某些内容的脚本.