通过最近关于使用 Git 为 Ruby 部署设置 AWS Elastic Beanstalk 的教程,我刚刚从我的 CI 服务器设置了一个 Elastic Beanstalk 环境。但是,应用程序无法启动。我浏览了日志,发现bundle install
失败并显示错误消息。
获取 git@github.com:example/private-repository.git 主机密钥验证失败。致命:远程端意外挂断[31mGit错误:
git clone 'git@github.com:example/private-repository.git' "/var/app/ondeck/vendor/cache/ruby/1.9.1/cache/bundler/git/private-repository-e4bbe6c2b13bb62664e39e345c1b01d80017934c" --bare --no-hardlinks
目录/var/app/ondeck中的命令失败。[0m
Gemfile
我的 Rails 应用程序包含对托管在我在 Github 上的几个私有存储库中的 gemified 插件的引用。就像是
gem 'somegemname', :git => 'git@github.com:example/private-repository.git'
我在 Capistrano 部署中遇到过类似的问题,这些问题通过设置ssh_options[:forward_agent] = true
.
AWS Elastic Beanstalk Ruby 容器支持通过.config
放置在.ebextensions
. 在这种情况下,设置 SSH 转发代理会有所帮助吗?在启动 Elastic Beanstalk 环境时,是否有其他替代方法可以访问私有 Github 存储库?
更新 1:我刚刚检查了bundle install
启动 a 的用户。发现脚本以用户身份/opt/elasticbeanstalk/hooks/appdeploy/pre/10_bundle_install.sh
启动。我尝试在下创建一个 SSH 密钥,并将它的 pub-key 添加到该存储库的 Github Deploy 密钥中。到目前为止没有运气。现在将尝试将 SSH 发布密钥添加到我在 Github 上的用户帐户,以便它适用于通过我的 Github 帐户访问的所有私有存储库。bundle install
root
/root/.ssh