Har*_*oyd 6 php git bitbucket composer-php
我正在尝试将 Bitbucket 上托管的私有包拉入我的项目,但我似乎无法让 Composer 使用我的 SSH 密钥正常工作。
我目前正在尝试:
{
"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"
}
},
Run Code Online (Sandbox Code Playgroud)
当我尝试运行作曲家更新时,我得到了,Permission denied (publickey)但是当我运行时,ssh -T git@bitbucket.org -i /home/vagrant/.ssh/bitbucket_id_rsa我可以成功连接。
我不确定它是否甚至尝试使用指定的密钥,因为如果我在priv和pubkey 选项中键入随机字母,它仍然会以相同的方式失败,而不是抛出找不到文件。
希望这只是我犯的一个小配置错误,因为我不太确定它出了什么问题。
使用composer进行测试2.0.8,该ssh2选项仅支持"type": "composer"(尚未支持git或vcs类型)。
但即使对于"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"
}
}
}]
}
Run Code Online (Sandbox Code Playgroud)
位于它们所在的位置,作曲家简单地忽略这些设置并不奇怪。
如果您有私有 bitbucket 存储库,您可能应该使用bitbucket 驱动程序:
{
"config": {
"bitbucket-oauth": {
"bitbucket.org": {
"consumer-key": "myKey",
"consumer-secret": "mySecret"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
最后但并非最不重要的一点是,在bitbucket-pipelines.yml文件中我们可以代替所说的选项键:
git config --global core.sshCommand "ssh -p 22 -i '$(pwd)/my-ssh-key.txt' -o IdentitiesOnly=yes -F /dev/null"
Run Code Online (Sandbox Code Playgroud)
其中
my-ssh-key.txt文件内容设置为用作 ssh 密钥。只要上面运行在 Docker 镜像上,它就可以工作,但是对于所谓的“Runner”,我们需要撤消上面的操作,例如:
Run Code Online (Sandbox Code Playgroud)git config --global --unset core.sshCommand