Composer php 通过cronjob更新Satis

Composer php 通过cronjob更新Satis,composer-php,packagist,satis,Composer Php,Packagist,Satis,我试图通过cron作业更新我的私有存储库,但似乎什么都没有发生。我正在使用Satis为我的私有包创建存储库 我可以通过SSH登录我的帐户并运行: php bin/satis build satis.json ./ -n 除了我必须输入一百万次我的密码外,这一切都更新得很好。我可以通过使用SSH代理解决这个问题,我想这可能是我的问题 php /home/accountname/public_html/bin/satis build /home/accountname/public_html/sa

我试图通过cron作业更新我的私有存储库,但似乎什么都没有发生。我正在使用Satis为我的私有包创建存储库

我可以通过SSH登录我的帐户并运行:

php bin/satis build satis.json ./ -n
除了我必须输入一百万次我的密码外,这一切都更新得很好。我可以通过使用SSH代理解决这个问题,我想这可能是我的问题

php /home/accountname/public_html/bin/satis build /home/accountname/public_html/satis.json /home/accountname/public_html/ -n
我有什么遗漏吗

更新

这是SSH身份验证,因为我通过电子邮件收到此错误(缩短版)

读取供应商/包的composer.json (硕士)
更新失败 git@bitbucket.org:vendor/package.git,来自此 存储库可能已过时(权限被拒绝(公钥)。致命:该 远程端意外挂起错误:无法获取源)

在文档中提到使用
-n
来使用SSH密钥,但我正在使用它

有什么想法吗

更新

我想我会添加我的satis文件结构:

{
    "name": "Name Of My Repo",
    "homepage": "http://repodomain.co.uk",
    "repositories": [
        { "type": "vcs", "url": "git@bitbucket.org:vendor/package.git" }
    ],
    "require-all": true
} 

真的被困在这一点上,文档是垃圾

您是对的,SSH身份验证是这里的问题

当cronjob运行时,它必须以某种方式访问您的Bitbucket存储库。您选择使用“git”协议,它使用SSH。在使用SSH时,使用基于密钥的身份验证要比使用密码好得多——而在git repos中,这是大多数情况下依赖于主机的唯一方法

要么将私钥放在cron服务器上以访问Bitbucket(这可能是个坏主意),要么创建一个新密钥对并使用它来允许访问repo(更好的方法是,除非您的bitbucket帐户受到某些限制,例如,如果该密钥算作用户,则会有太多用户-另一方面,您可以将该密钥限制为仅允许读取,而不允许写入)

确保用于运行cronjob的用户正在使用这些密钥,例如,您应该能够在不使用任何代理的情况下手动启动脚本,并且脚本应该在不询问密码的情况下完成。私钥的正确位置是
~/.ssh
,公钥将转到Bitbucket。之后,所有内容都应该在克朗乔


另一种方法是使用不同的协议(如HTTPS)对于repo访问,请查看发生了什么。

好的,那么我是否需要以root用户身份登录到我的服务器并创建SSH密钥?因为我以帐户用户身份创建了cronjob,并以用户身份通过SSH登录到帐户,并创建了SSH密钥,如上所述,该密钥不起作用。感谢您花时间回答。刚刚检查,我的SSH密钥已找到在
/home/accountname/.ssh
中,您需要将密钥作为运行cronjob的用户。cronjob是否以root用户身份运行?是的。没有密码短语,cronjob可以直接使用私钥。这也不会影响安全性:如果有人可以读取您的私钥文件,他也可以使用密码短语读取cronjob。只有一个通过电子邮件发送,无误运行。感谢您的宝贵时间!