git 在composer中使用ssh密钥创建私有vcs

dsekswqp  于 2023-02-28  发布在  Git
关注(0)|答案(1)|浏览(155)

我试图将Bitbucket上的私有包拉到我的项目中,但似乎无法使用SSH密钥使composer正常工作。
我目前正在尝试:

{
    "type": "composer",
    "url": "https://packagist.org"
},
{
    "type": "vcs",
    "url": "git@bitbucket.org:{projectName}/{repo}.git",
    "ssh2": {
        "username": "git",
        "privkey_file": "/home/vagrant/.ssh/bitbucket_id_rsa",
        "pubkey_file": "/home/vagrant/.ssh/bitbucket_id_rsa.pub"
    }
},

当我尝试运行composer update时,我得到Permission denied (publickey),但当我运行ssh -T git@bitbucket.org -i /home/vagrant/.ssh/bitbucket_id_rsa时,我可以成功连接。
我不确定它是否尝试使用指定的密钥,因为如果我在privpub密钥选项中键入随机字母,它仍然以同样的方式失败,而不是抛出一个找不到的文件。
希望这只是一个小的配置错误,我已经做了,因为我不太清楚它是什么问题。

nom7f22z

nom7f22z1#

使用composer 2.0.8测试,ssh2选项仅支持"type": "composer"(尚不支持gitvcs类型)。
但是即使对于"composer"类型,你也应该把ssh2选项写在它们所属的地方。这些选项属于options键的对象。

{
  "repositories": [{
    "type": "composer",
    "url": "ssh2.sftp://example.org",
    "options": {
      "ssh2": {
        "username": "composer",
        "pubkey_file": "/home/composer/.ssh/id_rsa.pub",
        "privkey_file": "/home/composer/.ssh/id_rsa"
      }
    }
  }]
}

位于他们所在的地方,这并不奇怪 composer 只是忽略了这些设置。

其他替代品

如果你有一个私有的bitbucket存储库,你可能应该使用bitbucket驱动程序:

{
    "config": {
        "bitbucket-oauth": {
            "bitbucket.org": {
                "consumer-key": "myKey", 
                "consumer-secret": "mySecret"
            }
        }

    }
}

最后但并非最不重要的是,在bitbucket-pipelines.yml文件中,我们可以代替说选项键做:

git config --global core.sshCommand "ssh -p 22 -i '$(pwd)/my-ssh-key.txt' -o IdentitiesOnly=yes -F /dev/null"

其中my-ssh-key.txt文件的内容设置为用作ssh-key。
只要上述运行在一个对接器映像,它只是工作,但对于所谓的“Runner”,我们需要撤销以上,如:

git config --global --unset core.sshCommand

相关问题