在使用私有 Github 存储库时,任何人在使用 Laravel 的特使部署时有任何问题吗?
从生产服务器手动克隆我的存储库时,ssh 密钥似乎可以访问,但是在使用 Envoy 时,我总是收到“权限被拒绝(公钥)错误。
谢谢
在使用私有 Github 存储库时,任何人在使用 Laravel 的特使部署时有任何问题吗?
从生产服务器手动克隆我的存储库时,ssh 密钥似乎可以访问,但是在使用 Envoy 时,我总是收到“权限被拒绝(公钥)错误。
谢谢
这可能是因为远程服务器上的 ssh 密钥需要密码。
如果您更改Envoy.blade.php
以执行其他任务,您应该能够确定您是否正确连接到遥控器。
@servers(['web' => 'user@domain.com'])
@task('deploy')
cd /path/to/site
git status
@endtask
应该返回类似:
[user@domain.com]: On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean
如果您使用 Mac 或 Linux 进行连接,您可能不必输入密码,因为您的终端正在使用ssh-agent
它静默处理您的身份验证。
通过 ssh 连接时,ssh-agent 没有运行,并且脚本被提示输入密码,这是它失败的地方。
为了解决这个问题,您可以在不使用密码的远程机器上生成一个新密钥。
如果您想将 ssh 密钥限制为 GitHub 上的单个存储库,请查看部署密钥
您需要在 ssh 字符串中传递-A(根据手册页 - 启用身份验证代理连接的转发。这也可以在配置文件中基于每个主机指定)。
您还需要添加 ssh 密钥以进行代理转发(在可以访问 git 远程的机器上,我假设它是您的本地主机)
ssh-add -K ~/.ssh/your_private_key
像这样的东西
@servers(['web' => '-A user@domain.com'])
@task('deploy')
cd /path/to/site
git status
@endtask
Git 远程命令现在应该可以工作了。