php - 我如何告诉 Composer 对给定的 Composer 存储库使用哪个 key ?

标签 php git ssh composer-php

我有以下情况:

我有一个项目托管在 bitbucket 的私有(private)存储库中,我使用部署 key #1。

在该项目的 composer 文件中,依赖项托管在 satis 存储库上,并使用部署 key #2 通过另一个私有(private) bitbucket 存储库 pull 。

我将部署 key #1 存储在 ~/.ssh/id_rsa 中,因此 git pull 开箱即用,部署 key #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"
        }
    }
    }
],

如有任何帮助,我们将不胜感激。

谢谢。

最佳答案

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

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

编辑 vim ~/.ssh/config 例如

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

您需要将伪造的 repo-urls 放入您的 satis package.json 中,这将使它们对没有配置的任何人都无用 - 但我认为这很好,因为您正在限制访问。

(我使用这个技巧来屏蔽只读部署主机上的“远程编辑”个人帐户,这需要非常偶尔的提交!)

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

第二个想法:

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

关于php - 我如何告诉 Composer 对给定的 Composer 存储库使用哪个 key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26542835/

相关文章:

php - 如何在 Symfony2 中使用 FOSFFacebookBundle 为通过 Facebook 登录创建一个单独的 url

javascript - 如何发送ajax到同一页面?

Git:限制推送到远程存储库的文件

java - 推送我的应用程序时 Openshift 出现错误

perl - 在运行时通过 SSH 显示命令的输出

docker - 本地 Docker 容器之间的 SSH

PHP 和 MySQL 问题

php - 使用 javascript 和 php 增加一个值并将其保存在 POST 数组中

git - 无论大小写如何忽略git中的文件扩展名?

java - 调用 shell 脚本包含来自 java 的 SSH